关于数学:如何在Javascript中修复0.3 + 0.6 = 0.89999999999?

How to fix 0.3+0.6=0.89999999999 in Javascript?

本问题已经有最佳答案,请猛点这里访问。

当添加两个浮点值时,我将得到如下结果:

1
0.3+0.6 = 0.89999999999

我知道发生了什么事。在c中,我们可以使用十进制,但在javascript中,如何修复它?


数学实用程序

1
2
3
4
5
6
7
MathUtils = {
    roundToPrecision: function(subject, precision) {
        return +((+subject).toFixed(precision));
    }
};

console.log(MathUtils.roundToPrecision(0.3 + 0.6, 1)) // 0.9;


使用BigNumber库。例如,math.js支持bignumbers(由decimal.js提供支持)。

使用math.js的表达式分析器,可以使用bignumbers键入自然表达式:

1
2
3
4
5
// configure math.js to use bignumbers
math.config({number: 'bignumber'});

// evaluate an expression
math.eval('0.3 + 0.6'); // returns a BigNumber with value 0.9


本质上是一样的,但javascript没有内置类似于decimal的数字类型。如果搜索,可以找到各种实现,如big.js(只是一个示例,而不是建议)。