Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Precyzyjność printf
Forum PHP.pl > Forum > PHP
Fluke
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
Crozin
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.
franki01
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ć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.