Javaの0除算は、
int型同士だと、ArithmeticExceptionの例外が発生する
が、
doubleだと、NaN(Not a number 非数)になる
(例 0.0/0 -> NaN)
という仕様。
なぜか、というと、計算の仕方が違うから。
int同士の割り算は、通常、CPUの「除算命令」で実行し
float同士の割り算やdouble同士の割り算は、
通常、浮動小数点演算コプロセッサ、もしくはソフトウェアで演算するから。
コプロセッサの場合(ソフトウェアも同じ)、
0除算の演算結果は「0以外/0は無限大(inf)」になり「0/0は非数(nan)」になり例外は発生しない。
ちなみに、分母が0でないときには、Infinity(無限大)になる
(例 1.0/0 -> Infinity)
参考サイト↓
http://www.ibm.com/developerworks/jp/java/library/j-jtp0114/
0 件のコメント:
コメントを投稿