[英]What decides Nan and Infinity in java division operations
以下代碼的輸出使我感到困惑。 為什么有時使用NaN
有時使用Infinity?
public static void main (String[] args) {
double a = 0.0;
double b = 1.0;
int c = 0;
System.out.println(a/0.0);
System.out.println(a/0);
System.out.println(b/0.0);
System.out.println(b/0);
System.out.println(c/0.0);
System.out.println(c/0);
}
輸出為:
NaN
NaN
Infinity
Infinity
NaN
Exception in thread "main" java.lang.ArithmeticException: / by zero
這里的決定因素是什么?
這是因為IEEE浮點算法標准(IEEE 754)是由電氣和電子工程師協會(IEEE)於1985年建立的浮點計算技術標准。
IEEE浮點標准..指定每個浮點算術運算(包括除以零)均具有明確的結果 。 該標准支持帶符號的零, 無窮大和NaN (非數字)。 有兩個零:+0(正零)和−0(負零),這消除了除時的任何歧義 。
在IEEE 754算術,
a ÷ +0
是正無窮大時a
是當正 , 負無窮a
是負和NaN當a = ±0.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.