Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Precyzyjność printf, Nie precyzyjny dla liczb zmiennoprzecinkowych.
Fluke
post 16.07.2012, 12:32:12
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam.
Mam małe pytanie odnośnie funkcji printf.
Zauważyłem, że jest mało precyzyjny dla liczb o dużej ilości zer po przecinku.
Mam taki kod:
  1. $var = 2.454;
  2. printf("Nasza zmienna: %.20f", $var);

Wyświetla mi: 2.45400000000000018119

Zastanawia mnie ten fakt, bo uczę się php cały czas i nie wiem dla czego tak się dzieje.
Dziękuje i pozdrawiam smile.gif
Go to the top of the page
+Quote Post
Crozin
post 16.07.2012, 12:50:04
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


liczby zmiennoprzecinkowe - w pierwszych wynikach będziesz miał wszystko o tym czym one są, jak działają i dlaczego nie reprezentują dokładnych wartości.
Go to the top of the page
+Quote Post
franki01
post 16.07.2012, 12:57:54
Post #3





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


To urok liczb zmiennoprzecinkowych. W systemie dwójkowym nie da się niektórych liczb zapisać tak prosto, jak w systemie dziesiętnym. Tak jak liczba PI ma nieskończone rozwinięcie i podajemy tylko przybliżoną wartość, tak np. liczba 2.454 w systemie dwójkowym ma nieskończenie rozwinięcie, pisane zerami i jedynkami. Wtedy podawane jest jak najbliższe przybliżenie w systemie dwójkowym. Jeżeli przy liczbie PI podałbyś, żeby skrypt pisał 20 cyfr po przecinku, wypisałby je. Tutaj jest tak samo. Eksperymentalnie spóbuj zapisać sobie kilka liczb z miejscami po przecinku (1.3, 1.7, 1.9) w systemie dwójkowym i zobaczysz, że wcale nie jest tak prosto te liczby przedstawić. Dojdziesz tylko do największego przybliżenia, ale dokładnie taką liczbę nie zawsze się da zapisać.

Ten post edytował franki01 16.07.2012, 12:58:46
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 06:55