许多语言都有isNaN()函数。我问自己:为什么检查不是数字?
理由是纯逻辑还是更快检查而不是数字而不是是数字?
注意这是一个纯粹的理解问题。我知道我可以否定isNaN()来实现一个isNumber()函数。例如 但是我正在寻找一个原因为什么我们要检查而不是数字?
答案 0 :(得分:7)
在计算中,NaN(非数字)是一个 数值数据类型的值 表示未定义或 不具代表性的价值,特别是在 浮点计算。
因为Not a Number是表达式的特例。
你不能只使用0或-1或类似的东西,因为这些数字已经有意义。
不是数字意味着计算中出现问题,无法计算出有效数字。
与null
的思路相同。当然,我们可以指定一个任意数值来表示null
,但这会让人感到困惑,我们会在角落情况下遇到各种奇怪的错误。
答案 1 :(得分:3)
'Not a Number'是特定浮点计算的结果。这不是“嘿,这个变量是持有120还是”abc“?
答案 2 :(得分:2)
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
}
答案 3 :(得分:2)
检查是否不是数字,因为假设它是一个数字。当你期望一个数值时,NaN是一个例外情况,所以我这样做是有意义的。毕竟,我宁愿经常检查isNaN是否经常检查值是否为Num。
答案 4 :(得分:1)
这是一种报告错误情况的方法(数学上未定义或超出技术限制)。
答案 5 :(得分:0)
如果计算结果无法用数字表示,则许多语言都有特殊表示,例如NaN和Inf。所以isNaN()检查,如果结果实际上是数字或NaN的特殊标记。
答案 6 :(得分:0)
NaNs用于: