2013-05-17 17 views
9

Chcę dokonać mnożenia za pomocą javascript.Kiedy pomnożę 2 i 0,15 dostałem 0,3 ale gdy pomnożę 3 i 0,15 dostałem 0,44999999999999996 Chcę uzyskać 0,45 takich jak wynik.Jak mogę to zrobić z javascript?Mnożenie int i float w javascript

+1

Brak "int" lub "float" w JavaScript. Wszystko jest "podwójne". Mówiąc to, szukasz wartości "toFixed()"] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed), jeśli chcesz przekonwertować swoją wartość w ciąg. – Zeta

+0

http://pl.wikipedia.org/wiki/Kolekcja_facenia – Sirko

+0

Jak mogę uzyskać wynik 0,45 dla mnożenia 0,15 i 3? –

Odpowiedz

12

To błąd zaokrąglania. Może chcesz zaokrąglić liczbę do Twojego ustalonej ilości cyfr, na przykład:

parseFloat((your_number).toFixed(2)); 
+1

To fajnie, ale produkuje ciąg FWIW! –

+0

Więc parsujcie to – mplungjan

+0

@mplungjan Tak, wiem, że OP nie musi. –

4

Niestety dzieje się w dowolnym języku z wykorzystaniem arytmetyki zmiennoprzecinkowej. Jest to artefakt powstający, gdy operacje zmiennoprzecinkowe są kodowane na binarne, wykonywane operacje i dekodowane z plików binarnych w celu zgłoszenia odpowiedzi w oczekiwanej formie.

W zależności od tego, co chcesz zrobić z wyjściem, możesz wywołać funkcję round() - like, aby zaokrąglić do liczby miejsc dziesiętnych lub porównać wyjście do wartości za pomocą (małej) liczby o nazwie tolerancji . Na przykład. dwie liczby są uważane za równe, jeżeli ich bezwzględna różnica jest mniejsza niż ta tolerancja.

+0

dzięki dużo :) –