我试图添加三个输入字段,每个输入字段的值为33.3,总共应为99.9,但它们总计为99.89999999999999
有人可以解释这是怎么回事。以下是我的代码。提前致谢。
$("#modify-funding input.percentCalc").sumValues()
$.fn.sumValues = function () {
var sum = 0;
this.each(function () {
sum += $(this).fieldVal();
});
return sum;
};
$.fn.fieldVal = function () {
var val;
if ($(this).is(':input')) {
val = $(this).val();
alert("val " + val);
} else {
val = $(this).text();
}
return parseFloat(('0' + val).replace(/[^0-9-\.]/g, ''), 10);
};
答案 0 :(得分:1)
欢迎来到浮点数的精彩世界。浮点是您想要表示的数字的近似值。因此,当您将数字保存为33.3
时,它会出现但不完全33.3
,此错误会在多次操作后累加。比较浮点数的最佳方法是不测试相等性,而是测试它们在一定范围内的天气。
而不是
if(x == 99.9)
试
if(Math.abs(99.9 - x) < .1)
如果您只想要字符串表示。您可以尝试将浮点数作为整数处理。即33.3
等于333
,然后当您将其重新转换为字符串时,您可以在适当的位置添加小数。这将是解决您问题的最佳方案。