浮点数数学问题加减法

时间:2018-10-12 18:45:26

标签: javascript math add subtraction

我知道JavaScript在数学方面存在一个臭名昭著的问题,可能会导致数学问题返回错误的十进制数字。但是,如何在JS中进行简单的加减运算却不会产生奇怪的结果呢?而且加法和减法的数字不是固定数字,而是基于变量的。例如...

添加

var a = 3.94
var b = 0.5
var r = a + b
console.log(r) //4.4399999999999995

减去

var a = 4.22
var b = 0.5
var r = a - b
console.log(r) //3.7199999999999998

我知道JS中的数学浮点问题,但我正在寻找一种简单的解决方案,以免在进行一些加法和减法时出现此问题。

Is floating point math broken?

1 个答案:

答案 0 :(得分:1)

感谢@Stakvino的建议,我想我已经弄清楚了。

让我知道你们的想法。

添加

var a = 3.94
var b = 0.5

var fixed = String(a)

if (fixed.indexOf('.') === -1) {
    fixed = 0;
}

else {
    fixed = fixed.split('.')
    fixed = fixed[1].length;
}



var r = (a + b).toFixed(fixed)
console.log(r)

减法

var a = 4.22
var b = 0.5

var fixed = String(a)

if (fixed.indexOf('.') === -1) {
    fixed = 0;
}

else {
    fixed = fixed.split('.')
    fixed = fixed[1].length;
}



var r = (a - b).toFixed(fixed)
console.log(r)