Javascript 为什么parseInt(无穷大)返回NaN,而parseFloat(无穷大)返回无穷大?

Javascript 为什么parseInt(无穷大)返回NaN,而parseFloat(无穷大)返回无穷大?,javascript,type-conversion,nan,infinity,Javascript,Type Conversion,Nan,Infinity,是什么原因使这两个函数在值无穷大和-无穷大时表现不同。有人发现这种不一致性有用吗 parseInt(Infinity); // NaN parseFloat(Infinity); // Infinity 这一问题的答案在两个功能的规范中是正确的: 接受字符串参数 如果第一个字符无法转换为数字,则parseInt返回NaN parseFloat还可以解析并返回无穷大的值。可以使用isFinite函数确定结果是否为有限数(不是无穷大、无穷大或NaN) parseInt无法返回infinity,因

是什么原因使这两个函数在值无穷大和-无穷大时表现不同。有人发现这种不一致性有用吗

parseInt(Infinity); // NaN
parseFloat(Infinity); // Infinity

这一问题的答案在两个功能的规范中是正确的:

接受字符串参数

如果第一个字符无法转换为数字,则parseInt返回NaN

parseFloat还可以解析并返回无穷大的值。可以使用isFinite函数确定结果是否为有限数(不是无穷大、无穷大或NaN)

parseInt
无法返回
infinity
,因为
infinity
不在JavaScript的整数范围内。而它是浮点范围内的有效值


至于有用吗?我不能说。在我工作的领域中,
NaN
表示发生了错误,我不相信我曾经使用过
无限

使用字符串参数,并且
不能转换为数字,
不一定是正确的解释
Number('Infinity')
是一个表示无限的数字,
parseFloat
还接受字符串
parseFloat('Infinity')
。和
Infinity.toString()
将导致
“无穷大”
,因此
parseInt(无穷大)
将导致
parseInt(“无穷大”)
。无穷大不在JavaScript的整数范围内。为什么?像8888888888888888888888888888888888888888888888888888888889889999999999999999999这样的数字应该是无穷大,对吗?@Devashish JS中的最大安全整数是
9007199254740991
,上面的一切都是浮点精度@t、 侄女有时JS的行为简直令人难以置信。谢谢:)@Devashish这在其他语言中不会有什么不同。像整数这样的非浮点数不能表示无穷大,所以如果您请求一个整数,就不能得到无穷大。