首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >parseInt()科学符号

parseInt()科学符号
EN

Stack Overflow用户
提问于 2015-03-17 10:51:16
回答 1查看 2.5K关注 0票数 5

和JS一起玩还注意到了这点。

为什么parseInt(1e+21)返回1parseInt(1e+20)返回100000000000000000000parseInt(10e+20)也返回1

为什么parseInt(1.7976931348623157E+10308);返回NaNparseFloat(1.7976931348623157E+10308)返回Infinity

甚至创建了fibonacci序列,任何具有+21指数的值都只返回第一个数字:

parseFloat()将返回正确的号码,直到无限。

Fibonacci演示(int : parseInt():parseFloat())

(用铬测试)

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 10:59:23

parseIntparseFloat应该解析字符串,并将它们转换为Number字符串。因此,当您传递给它们一个Number时,解释器会强制将它们转换为字符串。因此,至少在火狐中,"" + 1e+20输出"100000000000000000000""" + 1e+21输出"1e+21"

让我们读一下文献资料 of parseInt

如果parseInt遇到的字符不是指定基数中的数字,它将忽略该字符和所有后续字符,并返回解析到此点的整数值。

所以parseInt("1.whatever")返回1parseInt("32.231e+something")返回32。

类似的事情必须发生在parseFloat上。

这是弱打字的错。当你做你做的事情时,正确的行为是抛出一个异常。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29097198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档