以下代码:
f = new Float32Array(1)
f[0] = 1.234567890
f[0] = f[0].toFixed(3)
console.log(f[0])
打印 1.2350000143051147
而不是 1.235
。有人知道为什么吗?
如果我将 Float32Array
更改为 Float64Array
,它将正常工作。
最佳答案
.toFixed()
函数返回一个字符串,而不是一个数字。当您将该字符串分配回数组时,它会转换回数字,并且固有的不准确性变得明显。使用 32 位二进制 float ,最接近十进制值 1.235 的值(显然)约为 1.2350000143051147。
二进制 浮点值不能“固定”,必然地固定到一定数量的小数小数 位。
关于javascript - toFixed 不适用于 Float32Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307213/