Javascript 将字符串转换为base36语言之间存在不一致。
在将字符串转换为base36时,我注意到Python和JavaScript之间存在一些不一致之处 Python方法:Javascript 将字符串转换为base36语言之间存在不一致。,javascript,python,base36,Javascript,Python,Base36,在将字符串转换为base36时,我注意到Python和JavaScript之间存在一些不一致之处 Python方法: >>> print int('abcdefghijr', 36) <script> document.write(parseInt("abcdefghijr", 36)); </script> 结果:37713647386641447 Javascript方法: >>> print int('abcdefgh
>>> print int('abcdefghijr', 36)
<script>
document.write(parseInt("abcdefghijr", 36));
</script>
结果:37713647386641447
Javascript方法:
>>> print int('abcdefghijr', 36)
<script>
document.write(parseInt("abcdefghijr", 36));
</script>
编写(parseInt(“abcdefghijr”,36));
结果:37713647386641450
是什么导致两种语言的结果不同?在不考虑语言的情况下,产生相同结果的最佳方法是什么
多谢各位 这个数字需要56位来表示。JavaScript的数字实际上是,简称为
double
。它们总共是64位,可以表示比64位整数更宽的值范围,但由于它们是如何实现这一点的(它们将一个数字表示为尾数*2^指数
),它们不能表示该范围内的所有数字,而只能表示尾数中的倍数2^指数
(其中包括2^0=1,因此您可以得到尾数可以直接处理的所有整数)。尾数是53位,这对于这个数字来说是不够的。因此它被四舍五入到一个可以表示的数字
你可以使用第三方库定义的任意精度数字类型,如
gwt math
或Big.js
。如果你知道学校的算术,这些数字并不难实现。有效地实现这一点是另一回事,但也是一个广泛研究的领域。如果你使用现有的libra,这不是你的问题ry.请参见;javascript不像Python那样具有任意精度的大整数。(只需在javascript控制台中键入37713647386641447
即可获得相同的舍入值)非常好的解释。谢谢。