javascript中的大数字

Posted

技术标签:

【中文标题】javascript中的大数字【英文标题】:Large number in javascript 【发布时间】:2013-02-21 15:16:01 【问题描述】:

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

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

【问题讨论】:

这可能有用:***.com/questions/11124451/… How to deal with big numbers in javascript的可能重复 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

取自Mozilla documentation:

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

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

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


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

【讨论】:

【参考方案3】:

尝试使用 parseFloat 而不是 parseInt。

<script type="text/javascript">
    var value = parseFloat(5345345345353453453453535);
    alert(value);
</script>

【讨论】:

这不会给你5345345345353453453453535,而只会给你四舍五入的值。

以上是关于javascript中的大数字的主要内容,如果未能解决你的问题,请参考以下文章

十进制逗号删除并将逗号添加到javascript中的大数字

解决后端返回数据中的大数字问题(使用第三方包json-bigint )

将JSON中的大数字解析为字符串[重复]

所有javascript数组和对象方法的大O [关闭]

Javascript - 十六进制字符串到十进制字符串

当用作哈希时,JavaScript 的数组的大 O 是多少?