2012-09-20 20 views
47

Powiel możliwe:
Is JavaScript's Math broken?Float suma z javascript

mam obliczenie sumy kilku liczb rzeczywistych z wykorzystaniem JavaScript i ... zauważyłem dziwną rzecz nigdy nie widział przed. Wykonanie tego kodu:

parseFloat('2.3') + parseFloat('2.4') 

mogę uzyskać 4.699999999999999

Więc ... co sould zrobić, aby uzyskać prawidłową wartość? (Zakłada się, że jest to błędne ...)

+0

nie jestem mówiąc to pomoże w tym pytaniu. Ale zawsze lubię wskazywać [ten artykuł] (http://www.codeproject.com/Articles/182416/A-Collection-of-JavaScript-Gotchas) w czasach takich jak ten – musefan

+2

Dlaczego uważasz, że arytmetyka zmiennoprzecinkowa była dokładny? Poważnie, pytania o niedokładność zmiennoprzecinkowe są publikowane niezwykle często, a my powinniśmy wymyślić przyczyny i coś z tym zrobić. Czy ktoś ci powiedział, że arytmetyka zmiennoprzecinkowa była dokładna? Po prostu założyłeś? Czy wiesz, dlaczego to założyłeś? Jeśli myślisz o tym, jak zaimplementujesz arytmetykę zmiennoprzecinkową? Czy byłby dokładny, gdybyś to zaimplementował? W jaki sposób? –

+0

Podczas wyszukiwania tego, nie widzę, jak to pytanie jest duplikatem - problem nie został rozwiązany na pytanie oznaczone jako duplikat, a mimo to, w całym SO, nie znalazłem właściwego rozwiązania dla tego samego problemu. – Malavos

Odpowiedz

7
(parseFloat('2.3') + parseFloat('2.4')).toFixed(1); 

jego zamiar dać rozwiązanie przypuszczam