javascript - 为什么我不能在不损失 JS 精度的情况下将字符串转换为数字?

标签 javascript string numbers

我们都知道+、Number()parseInt()可以将字符串转为整数。
但就我而言,我得到了非常奇怪的结果。
我需要将字符串 '6145390195186705543' 转换为数字。

let str = '6145390195186705543';
let number = +str; // 6145390195186705000, but should be: 6145390195186705543 

有人能解释一下为什么以及如何解决吗?

最佳答案

您的号码高于 Number.MAX_SAFE_INTEGER (9,007,199,254,740,991),这意味着 js 可能无法很好地表示它。

More information

关于javascript - 为什么我不能在不损失 JS 精度的情况下将字符串转换为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984393/

相关文章:

JavaScript - 显示带小数的数字

javascript - Phaser3 场景切换错误。我能怎么做?

javascript - 我可以为 KendoScheduler 数据源硬编码数据吗?

javascript - 取消选择 jqGrid 中的单行

javascript - 将 Number.MAX_SAFE_INTEGER 与 Math.random() 相乘时,我是否可能会丢失任何十进制数字(精度)?

javascript - 禁用按钮,直到达到一个数字

javascript - 正则表达式中间体

SQL Server 存储过程连接字符串作为查询

c# - 如何使用字符串定界符拆分字符串?

java - 将 infix 转换为 Postfix 时扫描多位数字