Когда я добавляю два значения текстового поля, которые составляют 1.001 и 0.001, а затем я делаю parseFloat
, я получаю 1.0019999999. Я хочу его 1.002. Вы можете мне помочь?Функция ParseFloat в JavaScript
ответ
Это известная проблема: см accuraty problem и сведение к минимуму проблемы точности: minimisation
0,002 не может быть точно представлен в виде числа с основанием 2. Аналогично тому, как 1/3 не может быть изображен в основании 10.
1/3 = 0,33333 ... время от времени. Чтобы точно представить число в базе 10, вам понадобится бесконечное число десятичных цифр.
0.002 - это число, которое может быть точно представлено в базе 10 (как мы видим здесь), но не в базе 2, как используется компьютерами. Чтобы точно представлять это число, потребовалось бы бесконечное число двоичных цифр.
Если вы хотите быстро исправить можно округлить до ближайшего тысячного
Math.round ((1,001 + 0,001) * 1000)/1000
Класс Javascript Number имеет функцию toFixed() это даст вам то, что вы хотите.
Итак, вы можете сделать parseFloat («1.0019999»). ToFixed (3), и это даст вам «1.002».
Параметр (3 в данном случае) количество цифр, чтобы показать после десятичной точки
The JavaScript методы Number.toFixed()
и Number.toPrecision()
могут помочь здесь, но they return a String
. Возможное решение заключается в следующем:
var x = parseFloat(parseFloat("1.0019999999").toPrecision(3));
- 1. функция javascript и parseFloat?
- 2. Чувствительная к работе функция ParseFloat в JavaScript?
- 3. Javascript parseFloat (номер) - parseFloat (number2) возвращение INT
- 4. Javascript parseFloat изменяет номер
- 5. Javascript parseFloat issue
- 6. parseFloat JavaScript не работает
- 7. Odd ParseFloat Issue Javascript
- 8. Javascript parseFloat и умножить
- 9. Javascript parsefloat плохое вычитание
- 10. Javascript parseFloat result
- 11. JavaScript parseFloat() issue
- 12. JavaScript: parseFloat неверно вычисляется
- 13. Javascript неожиданное поведение parsefloat?
- 14. Javascript странно parseFloat
- 15. Второй аргумент parseFloat в JavaScript?
- 16. JavaScript-калькулятор с использованием parseFloat
- 17. parseFloat return NaN javascript number
- 18. parseFloat rounding
- 19. Функция parseFloat не работает должным образом
- 20. Как округлить результаты parseFloat в JQuery/Javascript?
- 21. Javascript ParseFloat для автозаполнения без десятичных знаков
- 22. Javascript problem parseFloat и if/else loop
- 23. JavaScript parseFloat error: 1.445 + 2 = 3.4450000000000003
- 24. Отношение типа Javascript с использованием parseFloat(). ToFixed()?
- 25. Мой простой Javascript код parseFloat игнорирует десятичные
- 26. Javascript parseInt parseFloat и округлые десятичные знаки
- 27. Math.floor() и parseFloat() столкновение?
- 28. Неожиданный результат ParseFloat
- 29. Функция Math.max в Javascript
- 30. parseFloat NaN вопрос
Спасибо, 17 из 26. Я не знал о функции toFixed(). – pmg 2008-10-06 12:32:35