【发布时间】:2017-10-15 17:05:28
【问题描述】:
在 MDN 中 this example on parseInt method
console.log(parseInt(4.7 * 1e22, 10)); // Very large number becomes 4
console.log(parseInt(4.7 * 1e20, 10)); //result is 470000000000000000000
或小于 20 的小数字给我预期的结果这是什么原因?
【问题讨论】:
-
4.7 * 1e22已经是一个整数。你为什么要再次将其解析为整数?parseInt将第一个参数转换为字符串(因为它需要一个)并再次将其解析为整数。4.7 * 1e22的实际结果是4.7e+22。 -
预期结果是什么?
-
好的,我明白了,但在转换 4.7e+22 时也存在冲突,为什么这给 4 和 4.7e+2 给 470
-
问题的答案,“为什么有些值可以准确表示而其他更大的数字,不是因为变量存储在内存中的分配方式。有一个最大值可以存储对于 JavaScript 中的 Number 类型,如在此处讨论 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。这是评论而不是答案的原因是因为第二行输出的数字实际上比这大,我不知道为什么。我很感兴趣也可以听到答案。
-
我的预期结果是 47000000000000000000000 而不仅仅是 4
标签: javascript numbers parseint type-conversion