Javascript parseInt方法的问题
Javascript parseInt方法的问题,javascript,Javascript,parseInt函数使我的数字精度降低:最后两位数字从18变为20: console.log(parseInt('76561198236425518', 10)); 76561198236425520 为什么会发生这种情况以及如何修复它?数字以浮点形式存储,并带有53位的manttisa。这将精度限制为小于该数字的精度,因此必须四舍五入到它所能表示的最接近的浮点数 表示数字N所需的实际位数可以计算为大约log2N,或者,如果您使用的计算器无法计算以2为底的对数,logxN/logx2 log2
parseInt
函数使我的数字精度降低:最后两位数字从18变为20:
console.log(parseInt('76561198236425518', 10));
76561198236425520
为什么会发生这种情况以及如何修复它?数字以浮点形式存储,并带有53位的manttisa。这将精度限制为小于该数字的精度,因此必须四舍五入到它所能表示的最接近的浮点数 表示数字
N
所需的实际位数可以计算为大约log2N
,或者,如果您使用的计算器无法计算以2为底的对数,logxN/logx2
log276561198236425518
的值,大致为56.1
,表明它需要大约56位,这就是为什么它在末尾不精确。我正在更新我的问题JavaScript双浮点变量只有2^53
位精度。你的例子中的数字大致是2^56
。我认为如果你想使用十进制(10),没有必要使用基数。非常感谢,我可以用一些东西将字符串转换成数字吗?但是不要使用parseInt?