0

我正在用javascript开发一个计算器,用户可以在文本字段中输入值并执行操作。现在,如果用户输入一个非常大的值,例如 5345345345353453453453535,它将转换为 5.345345345353453e+24

我正在使用 parsrInt() 将其转换为整数。它给了我 5. 这是错误的。任何人都可以建议如何解决它?

4

3 回答 3

3

javascript 中的整数与每个数字一样,存储为IEEE754双精度浮点数。

因此,您只能精确存储最大为 2^51(尾数大小)的整数。

这意味着您必须设计另一种格式来处理大整数,或者使用现有的库,如BigInteger.js(Google 会建议其他一些)。

于 2013-02-21T15:19:31.297 回答
2

取自Mozilla 文档

解析字符串参数并返回指定基数或基数的整数。

因此parseInt()将您的值作为字符串5.345345345353453e+24

然后它忽略任何非整数值并将其归类为小数(5.345 ...),然后将其评估为5.


正如@dystroy所指出的,如果您希望使用这些大数字进行计算,您需要使用自定义格式,或者使用预先存在的 javascript 库。

于 2013-02-21T15:19:49.737 回答
0

尝试使用 parseFloat 而不是 parseInt。

<script type="text/javascript">
    var value = parseFloat(5345345345353453453453535);
    alert(value);
</script>
于 2013-02-21T15:17:53.180 回答