簡體   English   中英

是什么決定了Java除法運算中的Nan和Infinity

[英]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是當負無窮 aNaNa = ±0.


資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM