为什么Javascript与我的计算器计算公式不同?

时间:2020-05-16 05:42:46

标签: javascript

如果我在Firebase函数(在JavaScript中)中执行以下公式:

class OutOfStockException extends Exception
{
    public function __construct($message = "")
    {
        parent::__construct($message);
    }

    public function report() {
        \Log::debug('Product out of stock');
    }
}

结果为-0.009999999999999995

但是,如果我在计算器上执行此方程,则该值为-0.01

我应该注意,我粘贴了上面代码的简化版本,但是所有变量都获得了parseFloat操作,因此我确定它与此有关。还是其他?

1 个答案:

答案 0 :(得分:1)

这是由javascript处理浮点数的怪异方式引起的。 (您可以阅读更多here

例如,如果您在firebase中执行此操作,或者只是在浏览器中执行控制台

console.log(0.1 + 0.2);
// 0.30000000000000004

这只是JavaScript范围广泛的事情。解决该问题的方法是调用.toFixed(2)。这会将数字四舍五入到小数点后两位。

console.log(+(0.1 + 0.2).toFixed(2));
// 0.3

(如果您想知道为什么+在数字之前位于其中,这是因为.toFixed()返回了一个字符串。+将其返回了一个数字)