Javascript 浮点数的加法和减法

Javascript 浮点数的加法和减法,javascript,math,add,subtraction,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 = 3.94 var b = 0.5 var fixed = String(a) if (fixed.indexOf('

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

加成

var a = 3.94
var b = 0.5
var r = a + b
console.log(r) //4.4399999999999995
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 r = a - b
console.log(r) //3.7199999999999998
我知道JS中的数学浮点问题,但我正在寻找一个简单的解决方案,以避免在进行加法和减法运算时出现此问题


多亏了@Stakvino的建议,我想我找到了答案

让我知道你们的想法

加成

var a = 3.94
var b = 0.5
var r = a + b
console.log(r) //4.4399999999999995
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)

使用toFixed。var r=Number((a+b).toFixed(2))你引用了另一个问题,我认为。关于那里的答案,你有什么不明白的吗?@stephen他没有问“为什么?”而是问“如何解决”,不确定是否有助于指出/重复投票给对OP没有帮助的答案。@wizardHammer这些是“他的话”?我不知道他怎样才能改进他的问题,事实上这是非常恰当的。是的,有一些高质量的答案,但这不是拒绝投票的理由,而是重复投票的理由。不适用于
a=5,b=3.5
有没有JS方法可以在不使用+或-No之类的运算符的情况下进行加法和减法,这是不可能的(除非你进行位移位,但我不建议这样做)