parseInt(18446744073709551616)在javascript中返回18446744073709552000

时间:2014-02-05 04:37:24

标签: javascript

我正在将字符串解析为整数,并且在某些值之前它可以正常工作。之后,结果并不准确。 代码如下所示

parseInt(someString);//this string will have any value.

例如,当我执行以下代码时,我得到的结果为 18446744073709552000

parseInt(18446744073709551616) //result 18446744073709552000

但我期待结果是18446744073709551616。

任何人都可以说出错了吗?我如何实现我想要的目标。

我需要检查字符串是否超过最大值。那怎么可能呢?

1 个答案:

答案 0 :(得分:3)

您在JavaScript中超过了max value整数,随后失去了精确度。

What is JavaScript's highest integer value that a Number can go to without losing precision?


为什么你得到零:

  

让mathInt为Z表示的数学整数值   在radix-R表示法中,使用字母A-Z和a-z表示数字   值10到35. (但是,如果R是10且Z包含超过20   有效数字,20之后的每个有效数字可能是   在执行选项中由0位替换;如果R   不是2,4,8,10,16或32,那么mathInt可能是一个   依赖于实现的数学整数近似   以radix-R表示法用Z表示的值。)

http://ecma262-5.com/ELS5_HTML.htm#Section_15.1.2.2