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?