【问题标题】:How to fix 0.3+0.6=0.89999999999 in Javascript? [duplicate]如何在 Javascript 中修复 0.3+0.6=0.89999999999? [复制]
【发布时间】:2014-09-27 22:09:34
【问题描述】:

当添加两个浮点值时,我会得到类似的东西:

0.3+0.6 = 0.89999999999 

我知道发生了什么。在 C# 中我们可以使用小数,但在 Javascript 中,如何解决?

【问题讨论】:

标签: javascript math


【解决方案1】:

MathUtils

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

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

【讨论】:

    【解决方案2】:

    使用 BigNumber 库。例如math.js 支持大数字(由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
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-04-25
        • 2015-12-02
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 2020-04-23
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多