为什么parseInt()无法正确转换我的数字字符串?

新科学家

我在函数中有一些逻辑,该逻辑采用一串称为数字的数字,如下所示:

6145390195186705543

然后,我尝试使用parseInt()进行转换,如下所示:

parseInt(数字)

的结果:

digits = parseInt(digits);

6145390195186705000

有人可以帮我理解为什么会这样吗?以及如何获得准确的转换?

乔纳斯·威尔姆斯

这是“断点”浮点数学运算的另一个版本:Javascript使用64位存储数字,该数字小至原子大小,最多不超过宇宙中的原子数。由于范围很广,因此无法准确存储,因此数字的存储方式不精确,但代表的范围很广。您的情况6145390195186705000是JS能够存储的版本不正确,因为6145390195186705543无法存储。

以及如何获得准确的转换?

您无法存储“准确的数字”,因此无法准确转换。但是,有些库允许您像对待数字一样使用字符串,例如BigIntJS


由于这是一个常见问题,因此将在下一个JS版本中解决此问题,请参阅此建议您目前可以在新版chrome中对其进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么WordPress转换我的帖子标题的方式与常规字符串不同?

如何转换我的字符串?

为什么我的正则表达式不匹配以下数字字符串?

为什么我的字符串识别算法无法检测到正确的字符串?

为什么 MySQL 不能正确转换我的数据?

无法使用JavaScript中的大写和小写函数转换我的字符串

Python我无法替换我的字符串值

MultiByteToWideChar不能很好地转换我的字符串

将数字字符串转换为数字列表

为什么我在Rails中将属性字符串转换为数字

为什么字符串转换不是数字促销的类型?

为什么numpy在字符串转换时截断数字?

为什么[[-eq]]在Bash中将非数字字符串显示为相等?

为什么我的程序无法对整数字符串进行排序?

为什么我的unicode字符串无法正确处理(打印/复制)?

是否有任何可以让我将数字字符串转换为数字和字母字符串的字符串方法?

在Snowflake中转换数字字符串

Python函数中的数字字符串转换

在Haskell中将数字字符串转换为int

将日期转换为数字字符串

SQL将数字字符串转换为int

将数字字符串转换为数组

在Excel中将数字字符串转换为值

无法用包含[和]的字符串替换我的字符串

为什么我的数字.val()变成字符串?

为什么Python字符串无法正确比较?

按照K&R,“数字字符串转换为等效的数字”示例无法正常工作

为什么从文本中读取的实际数字字符串无法使用Java中的Integer.valueOf()方法进行解析?

为什么字符串无法从Javascript转换为PHP?