许多语言都有 isNaN() 函数。我在问自己:为什么要检查不是数字?
原因是纯粹合乎逻辑的还是检查not a number而不是is a number更快?
请注意,这是一个纯粹的理解问题。例如,我知道我可以否定 isNaN() 来实现 isNumber() 函数。
但是我正在寻找为什么我们不检查数字的原因?
许多语言都有 isNaN() 函数。我在问自己:为什么要检查不是数字?
原因是纯粹合乎逻辑的还是检查not a number而不是is a number更快?
请注意,这是一个纯粹的理解问题。例如,我知道我可以否定 isNaN() 来实现 isNumber() 函数。
但是我正在寻找为什么我们不检查数字的原因?
在计算中,NaN(非数字)是数字数据类型的值,表示未定义或无法表示的值,尤其是在浮点计算中。
因为 Not a Number 是表达式的特例。
您不能只使用 0 或 -1 或类似的东西,因为这些数字已经有意义。
不是数字意味着计算中出现了问题,无法从中计算出有效数字。
它与拥有null
. 当然,我们可以指定一个任意数值来表示null
,但这会令人困惑,并且我们会在极端情况下遇到各种奇怪的错误。
'Not a Number' 是特定浮点计算的结果。这不是关于“嘿,这个变量是 120 还是“abc”?
isThisCaseExceptional
对我来说似乎比isEverythingNormal
因为我可能会写更合理
possible_number = some_calculation();
if (inNaN(possible_number)) handle_the_surprise;
// .. keep going
代替
possible_number = some_calculation();
if (inANumber(possible_number)) {
// .. keep going
} else {
// handle the surprise
}
检查它是否不是数字,因为假设它是一个数字。当您期望一个数值时,NaN 是一种例外情况,因此对我来说这样做是有道理的。毕竟,我宁愿不经常检查 isNaN 而不是经常检查值 isNum 。
这是一种报告错误情况(数学上未定义或超出技术限制)的方法。
如果计算结果不能用数字表示,例如 NaN 和 Inf,许多语言都有特殊的表示。因此 isNaN() 检查结果是否实际上是数字或 NaN 的特殊标记。
NaN 用于: