JS中`.toFixed()`函数的行为

时间:2019-01-15 12:13:33

标签: javascript rounding tofixed

使用.toFixed(i)时,我注意到了奇怪的行为。我试图取整(38.174999 * 100),却得到了奇怪的结果

console.log(`i: ${i} = `, (38.174999 * 10 ** 2).toFixed(i))
i: 1 =  3817.5
i: 2 =  3817.50
i: 3 =  3817.500
i: 4 =  3817.4999
i: 5 =  3817.49990
i: 6 =  3817.499900
i: 7 =  3817.4999000
i: 8 =  3817.49990000
i: 9 =  3817.499900000
i: 10 =  3817.4999000000
i: 11 =  3817.49990000000
i: 12 =  3817.499900000000
i: 13 =  3817.4998999999998

从13开始类似。有谁知道原因,并且已经尝试根据JS spec http://www.ecma-international.org/ecma-262/#sec-number.prototype.tofixed

检查运行情况

对于所有将此问题标记为0.1 + 0.2问题的人来说,情况都不一样。问题是为什么.toFixed(13).toFixed(12)

相比会改变价值

0 个答案:

没有答案