Ответ 1
Значения с плавающей точкой никогда не точны, как вы ожидаете. Вы можете использовать объект Number, чтобы преобразовать его, чтобы ответить, как вам нужно.
Number(100).toFixed(2) - Number(99.1).toFixed(2)
Я был шокирован, увидев такую основную ошибку вычитания в JS, я уверен, что большинство из вас здесь испытали бы эту проблему, пожалуйста, помогите мне с работой здесь, Все, что я делаю, это вычесть число из 100, которое дает неожиданные результаты, пример указан ниже
100 - 99.1
// returns 0.9000000000000057
Я делаю что-то неправильно здесь?: S Я смущен
Значения с плавающей точкой никогда не точны, как вы ожидаете. Вы можете использовать объект Number, чтобы преобразовать его, чтобы ответить, как вам нужно.
Number(100).toFixed(2) - Number(99.1).toFixed(2)
Вы работаете с числами с плавающей запятой, а не целыми числами. Ожидается.
Причина в том, что вы не можете точно представлять числа, такие как 0,1 и 0,3 в двоичном формате. Точно так же, как вы не можете представлять 1/3 начисления в десятичной форме.
В JavaScript все числовые типы - это объекты Number
, которые представлены как числа с плавающей запятой с двойной точностью.
В другой заметке вы можете получить строковое представление этих чисел в определенной десятичной точке с помощью метода Number
toFixed
, который принимает число, обозначающее, сколько десятичных точек вы хотели бы, чтобы возвращаемая строка представляла на основе приемник.
Пример:
var five = 5.00001;
console.log(five.toFixed(1)); //5.0
Вот как работают числа с плавающей запятой, они не точны. http://en.wikipedia.org/wiki/Floating_point может быть полезным.
Сначала не позволяйте себе присваивать значение float переменной, а затем делать это с прямым выражением переменной. вот пример:
**var c = 80.35-20.35;
alert(c.toFixed(2));**
это назначит 60,00, но другой способ решить это вернет 59.99999999.
Это не идеальный ответ, но он работает.
function format_float_bug(num)
{
return parseFloat( num.toFixed(15) );
}
вы можете использовать следующее:
format_float_bug(4990 % 10);
потому что ниже числа (49.89999999999999857891452848) первые 15 знаков после запятой, как 9999999