我正在用javascript开发一个计算器,用户可以在文本字段中输入值并执行操作。现在,如果用户输入一个非常大的值,例如 5345345345353453453453535,它将转换为 5.345345345353453e+24
我正在使用 parsrInt() 将其转换为整数。它给了我 5. 这是错误的。任何人都可以建议如何解决它?
我正在用javascript开发一个计算器,用户可以在文本字段中输入值并执行操作。现在,如果用户输入一个非常大的值,例如 5345345345353453453453535,它将转换为 5.345345345353453e+24
我正在使用 parsrInt() 将其转换为整数。它给了我 5. 这是错误的。任何人都可以建议如何解决它?
javascript 中的整数与每个数字一样,存储为IEEE754双精度浮点数。
因此,您只能精确存储最大为 2^51(尾数大小)的整数。
这意味着您必须设计另一种格式来处理大整数,或者使用现有的库,如BigInteger.js(Google 会建议其他一些)。
取自Mozilla 文档:
解析字符串参数并返回指定基数或基数的整数。
因此parseInt()
将您的值作为字符串5.345345345353453e+24
然后它忽略任何非整数值并将其归类为小数(5.345 ...),然后将其评估为5
.
正如@dystroy所指出的,如果您希望使用这些大数字进行计算,您需要使用自定义格式,或者使用预先存在的 javascript 库。
尝试使用 parseFloat 而不是 parseInt。
<script type="text/javascript">
var value = parseFloat(5345345345353453453453535);
alert(value);
</script>