【发布时间】:2016-11-16 08:50:30
【问题描述】:
导致这两个函数对于值 infinity 和 -infinity 的行为不同的原因可能是什么。有没有人发现这种不一致很有用?
parseInt(Infinity); // NaN
parseFloat(Infinity); // Infinity
【问题讨论】:
标签: javascript type-conversion nan infinity
导致这两个函数对于值 infinity 和 -infinity 的行为不同的原因可能是什么。有没有人发现这种不一致很有用?
parseInt(Infinity); // NaN
parseFloat(Infinity); // Infinity
【问题讨论】:
标签: javascript type-conversion nan infinity
这个问题的答案在这两个函数的规范中是正确的:
parseInt 采用 字符串 参数。
如果第一个字符不能转换为数字,则 parseInt 返回 NaN。
parseFloat 也可以解析并返回 Infinity 值。您可以使用 isFinite 函数来确定结果是否为有限数(不是 Infinity、-Infinity 或 NaN)。
parseInt 无法返回 infinity,因为 infinity 不在 JavaScript 的整数范围内。而它在浮点范围内是有效的。
至于有用?我不能说。在我工作的域中,NaN 表示发生了错误,我不相信我曾经使用过infinity
【讨论】:
takes a string parameter 和cannot be converted to a number, 不一定是正确的解释。 Number('Infinity') 是一个表示 Infinite 的数字,parseFloat 也接受一个字符串 parseFloat('Infinity')。而Infinity.toString(); 将产生"Infinity",所以parseInt(Infinity) 将产生parseInt("Infinity")。
9007199254740991,上面的一切都只是浮点精度。 Number.MAX_SAFE_INTEGER