我在函数中有一些逻辑,该逻辑采用一串称为数字的数字,如下所示:
6145390195186705543
然后,我尝试使用parseInt()进行转换,如下所示:
parseInt(数字)
的结果:
digits = parseInt(digits);
是
6145390195186705000
有人可以帮我理解为什么会这样吗?以及如何获得准确的转换?
这是“断点”浮点数学运算的另一个版本:Javascript使用64位存储数字,该数字小至原子大小,最多不超过宇宙中的原子数。由于范围很广,因此无法准确存储,因此数字的存储方式不精确,但代表的范围很广。您的情况6145390195186705000
是JS能够存储的版本不正确,因为6145390195186705543
无法存储。
以及如何获得准确的转换?
您无法存储“准确的数字”,因此无法准确转换。但是,有些库允许您像对待数字一样使用字符串,例如BigIntJS。
由于这是一个常见问题,因此将在下一个JS版本中解决此问题,请参阅此建议。您目前可以在新版chrome中对其进行测试。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句