如何在Javascript中修复0.3 + 0.6 = 0.89999999999?

时间:2014-08-05 09:36:23

标签: javascript math

添加两个浮点值时,我会得到类似的内容:

0.3+0.6 = 0.89999999999 

我知道发生了什么。在C#中我们可以使用十进制代替,但在Javascript中,如何修复它?

3 个答案:

答案 0 :(得分:1)

MathUtils

MathUtils = {
    roundToPrecision: function(subject, precision) {
        return +((+subject).toFixed(precision));
    }
};

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

答案 1 :(得分:0)

基本上以相同的方式,但JavaScript没有内置decimal的数字类型。如果你搜索,你可以找到各种实现,如big.js(只是一个示例< / em>,不是推荐)。

答案 2 :(得分:0)

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

使用math.js的表达式解析器,您可以使用bignumbers:

键入自然表达式
// 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