Функция ParseFloat в JavaScript

Когда я добавляю два значения текстового поля: 1.001 и 0.001, а затем я делаю parseFloat, я получаю 1.0019999999. Я хочу его 1.002. Можете ли вы мне помочь?

Ответ 1

Javascript Number класс имеет функцию toFixed(), которая поможет вам получить то, что вы хотите.

Итак, вы можете сделать parseFloat ( "1.0019999" ). toFixed (3), и это даст вам "1.002".

Параметр (3 в этом случае) - это число цифр, которое должно отображаться после десятичной точки

Ответ 2

0.002 не может быть точно представлено как базовое число 2. Подобно тому, как 1/3 не может быть представлен в базе 10.

1/3 = 0.33333.... Чтобы точно представить число в базе 10, вам понадобится бесконечное число десятичных цифр.

0.002 - это число, которое может быть точно представлено в базе 10 (как мы видим здесь), но не в базе 2, как используется компьютерами. Чтобы точно представлять это число, потребовалось бы бесконечное число двоичных цифр.

Ответ 4

Здесь могут помочь методы javascript Number.toFixed() и Number.toPrecision(), но они возвращают String. Возможное решение:

var x = parseFloat(parseFloat("1.0019999999").toPrecision(3));

Ответ 5

Если вы хотите быстро исправить, вы можете округлить до ближайшей тысячной

Math.round((1,001 + 0,001) * 1000)/1000