This question already has answers here:
What is JavaScript's highest integer value that a number can go to without losing precision?
                            
                                (21个回答)
                            
                    
                去年关闭。
        

    

有谁能解释为什么在JavaScript中发生以下情况的原因?

let x212 = 154688977320418212;
// returns 154688977320418200

let x230 = 154688977320418230;
// returns 154688977320418240

let x256 = 154688977320418256;
// returns 154688977320418240

let x257 = 154688977320418257;
// returns 154688977320418270


这是否意味着无法将长整数值存储而不将其转换为字符串?

最佳答案

在JavaScript中,所有数字均为64位浮点数。

尾数的大小约为53位,这意味着您的数字154688977320418257不能准确地表示为JavaScript数字。您所看到的是一个近似值,因为它是一个比MAX_SAFE_INTEGER高的数字(即9007199254740991)。

如果确实需要大数,则可以使用诸如https://github.com/peterolson/BigInteger.js之类的库。

关于javascript - 是什么使长整数数值(16个以上的字符)在J​​avaScript中发生突变? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54092481/

10-10 20:07
查看更多