为什么(-2.4492935982947064e-16).toFixed(5)等于“ -0.00000”?

时间:2019-06-05 08:37:40

标签: javascript floating-point precision tofixed

给出以下代码:

const value = 1;
Math.sin(2 * Math.PI * value).toFixed(5);

"-0.00000"之前的值为.toFixed(5)时为什么返回-2.4492935982947064e-16

3 个答案:

答案 0 :(得分:3)

该数字采用科学计数法。

e-16表示数字左侧有16个0。

-2.4492935982947064e-16

是真的

-0.00000000000000024492935982947064

运行到Fixed(5)时,您最终得到5个小数位,全为0。

答案 1 :(得分:0)

您提供的数字-2.4492935982947064e-16用科学计数法表示。该数字等于-2.4492935982947064 × 10^-16,在扩展后的数字恰好是-0.00000000000000024492935982947064

答案 2 :(得分:0)

-2.4492935982947064e-16-2.4492935982947064 * Math.pow(10,-16),因此小数点后5位不足以看到不同于0的内容

const value = 1;
let result = Math.sin(2 * Math.PI * value);
console.log(result)
console.log(result.toFixed(20))
console.log(result.toFixed(5))