toFixed不能在Float32Array上工作

时间:2016-09-03 13:02:19

标签: javascript

以下代码:

f = new Float32Array(1)
f[0] = 1.234567890
f[0] = f[0].toFixed(3)
console.log(f[0])

打印1.2350000143051147而不是1.235。谁知道为什么? 如果我将Float32Array更改为Float64Array,则可以正常使用。

1 个答案:

答案 0 :(得分:3)

.toFixed()函数返回字符串,而不是数字。当您将该字符串分配回数组时,它会转换回数字,并且固有的不准确性变得明显。使用32位二进制浮点最接近十进制值1.235(显然)约为1.2350000143051147。

二进制浮点值不能“固定”到一定数量的小数十进制位置。