Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串转换为base36语言之间存在不一致。_Javascript_Python_Base36 - Fatal编程技术网

Javascript 将字符串转换为base36语言之间存在不一致。

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

在将字符串转换为base36时,我注意到Python和JavaScript之间存在一些不一致之处

Python方法:

>>> 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
即可获得相同的舍入值)非常好的解释。谢谢。