To nie błąd Pythona, tylko sposób zapisu liczb zmiennoprzecinkowych w komputerze (standard IEEE 754). 0.1 nie da się dokładnie zapisać w systemie dwójkowym, tak jak 1/3 w dziesiętnym.
Do wyświetlania: round(0.1 + 0.2, 2) albo f-string f"{x:.2f}". Do pieniędzy: moduł decimal.
JAJackStackAutorodpowiedzi: 1
Czyli JavaScript ma to samo?
ELElaKowalska
Tak, każdy język z typem float. Strona 0.30000000000000004.com zbiera przykłady z różnych języków.
MAMateoGodpowiedzi: 1
Do porównań używaj math.isclose(a, b) zamiast ==. Oszczędzi Ci to kiedyś godziny szukania błędu.
Mateusz Zespół Space Python
Dokładnie tego dotyczy wyzwanie "Float surprise" — polecamy po tym przykładzie.
Komentarze 5
Zaloguj się, żeby dołączyć do dyskusji.
Zaloguj się Załóż kontoTo nie błąd Pythona, tylko sposób zapisu liczb zmiennoprzecinkowych w komputerze (standard IEEE 754). 0.1 nie da się dokładnie zapisać w systemie dwójkowym, tak jak 1/3 w dziesiętnym.
Do wyświetlania:
round(0.1 + 0.2, 2)albo f-stringf"{x:.2f}". Do pieniędzy: modułdecimal.Czyli JavaScript ma to samo?
Tak, każdy język z typem float. Strona 0.30000000000000004.com zbiera przykłady z różnych języków.
Do porównań używaj
math.isclose(a, b)zamiast==. Oszczędzi Ci to kiedyś godziny szukania błędu.Dokładnie tego dotyczy wyzwanie "Float surprise" — polecamy po tym przykładzie.