我們知道Java中整形運算是不允許0做爲分母的,但是在浮點運算中是可以的,於是就出現了NAN與Infinity的特殊情況,這兩種情況都是浮點數據非法。
1.Infinity:分子不爲零分母爲零,做除法的時候產生,表示無窮大或無窮小的數。
Double:
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
Float:
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;
2.NAN:分子分母都爲零,做除法時出現的非法類型
定義如下:
public static final double NaN = 0.0d / 0.0;
3.規避:
在實際操作中,出現NAN與Infinity非法浮點類型有時不是我們編碼原因造成的,有時是因爲調用了別人的接口或大量數據中間處理需要做除法難免會遇到這種情況,這時我們得想法將其規避,需要使用到Double的靜態方法
Double.isNaN(v)
Double.isInfinite(v)