以下代码:
f = new Float32Array(1)
f[0] = 1.234567890
f[0] = f[0].toFixed(3)
console.log(f[0])
打印1.2350000143051147
而不是1.235
。谁知道为什么?
如果我将Float32Array
更改为Float64Array
,则可以正常使用。
答案 0 :(得分:3)
.toFixed()
函数返回字符串,而不是数字。当您将该字符串分配回数组时,它会转换回数字,并且固有的不准确性变得明显。使用32位二进制浮点最接近十进制值1.235(显然)约为1.2350000143051147。
二进制浮点值不能“固定”到一定数量的小数十进制位置。