2010/06/06 23:59 / Category javascript
0で除算するとどうなるかはプログラム言語によってさまざま。
例えばphpでは”php -r ’10/0;’” → Warning(警告)が発生。
MySQLでは”select 10/0″ → NULL(極力エラーでとめない方針だからか)。
PostgreSQLではエラーがでてSQLを実行できない。
それぞれ、JavaScriptやECMA-262で定義されているもの。各ブラウザの勝手な仕様ではない。
仕様によると、こうなる。
Infinity を掛けたものは全て Infinity であり、Infinity で割ったものは全て 0 です。
なお、InfinityはNaNではない。それぞれ別のもの。
JavascriptはオーバーフローしてもInfinityにして処理を続けてくれる。まともな数値ではなくなるが、エラーでとまらない。
Infinityは、NaNやundefinedのような特殊な値と違い、通常の数値と同じように比較、演算できる。
Javascriptだと、何の問題もないですね。。。
エラーで停止するわけではないし、例外も投げないということと、無限大(Infinity、-Infinity)か非数(NaN)になるのを知っていれば何とかなるのでは。
Infinityプロパティ
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Properties/Infinity
Numberオブジェクト
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Number
そのほかのグローバルプロパティ
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Properties
システム開発 ソフテルのブログ | こんなこともメモって!
no comments
RSS / trackback