2013年6月7日金曜日

Javaの0除算

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 件のコメント:

コメントを投稿