5

NaNプログラミング言語に価値があるのはなぜですか?

Math.floor('string');  //--> NaN

TypeError をスローしないのはなぜですか?

TypeError: Expected number instead of string

JavaScriptは私が主によく知っている言語であるため、質問にはタグが付けられていますが、これは他の言語にも当てはまることを知っています.

4

3 に答える 3

4

型付き言語では、数値がない場合でも数値変数に数値を入れる必要があります。NaNを入れます(これが JavaScript にある理由typeof NaNです)。これは、より良いものがない場合のオブジェクト参照と"number"同じです。null

また、命令の流れを中断する例外は、実際には、すべての人にとってそれほど人気が​​あるわけではありません。文字列が数値として解析できないという単純な事実ではなく、例外的なケースに使用する必要があると主張する人もいるかもしれません。

NaNは、結果がどうあるべきかを決定できない場合に発生する、数学演算の結果である可能性もあります (たとえば、) 0 * Infinity。すべての操作に分岐を含めるよりも、NaN でこれを処理する方が簡単です。

于 2013-07-23T17:54:32.427 に答える
4

NaNs (および無限大などの他の非数値量) は、多くのプログラミング言語が実装しているIEEE 754 浮動小数点標準の一部であるため、創造的ではありません。

計算を中断することなく、数値計算の「特殊なケース」を通常の数値のように評価できるように設計されています。つまり、例外はありません。その代わりに、NaN は通常、良くも悪くも反対側に出るまで操作を通じて伝播されます。

于 2013-07-23T17:58:10.900 に答える