NaN
プログラミング言語に価値があるのはなぜですか?
Math.floor('string'); //--> NaN
TypeError をスローしないのはなぜですか?
TypeError: Expected number instead of string
JavaScriptは私が主によく知っている言語であるため、質問にはjavascriptと言語に依存しないタグが付けられていますが、これは他の言語にも当てはまることを知っています.
NaN
プログラミング言語に価値があるのはなぜですか?
Math.floor('string'); //--> NaN
TypeError をスローしないのはなぜですか?
TypeError: Expected number instead of string
JavaScriptは私が主によく知っている言語であるため、質問にはjavascriptと言語に依存しないタグが付けられていますが、これは他の言語にも当てはまることを知っています.
型付き言語では、数値がない場合でも数値変数に数値を入れる必要があります。NaNを入れます(これが JavaScript にある理由typeof NaN
です)。これは、より良いものがない場合のオブジェクト参照と"number"
同じです。null
また、命令の流れを中断する例外は、実際には、すべての人にとってそれほど人気があるわけではありません。文字列が数値として解析できないという単純な事実ではなく、例外的なケースに使用する必要があると主張する人もいるかもしれません。
NaN
は、結果がどうあるべきかを決定できない場合に発生する、数学演算の結果である可能性もあります (たとえば、) 0 * Infinity
。すべての操作に分岐を含めるよりも、NaN でこれを処理する方が簡単です。
NaN
s (および無限大などの他の非数値量) は、多くのプログラミング言語が実装しているIEEE 754 浮動小数点標準の一部であるため、創造的ではありません。
計算を中断することなく、数値計算の「特殊なケース」を通常の数値のように評価できるように設計されています。つまり、例外はありません。その代わりに、NaN は通常、良くも悪くも反対側に出るまで操作を通じて伝播されます。