parseInt
函数使我的数字松散精度:最后两位数字从18变为20:
console.log(parseInt('76561198236425518', 10));
76561198236425520
为什么会发生这种情况以及如何解决?
答案 0 :(得分:0)
数字存储为具有53位尾数的浮点数。这限制了你可以拥有的精度低于你那个数量的精度,因此它必须舍入到它可以代表的最近的浮点数。
表示数字N
所需的实际位数可以计算为大约log2N
,或者,如果您正在使用无法计算对数的计算器二,logxN/logx2
。
log276561198236425518
的值,大致为56.1
,表明它需要大约56位,这就是为什么它不接近结尾的原因。