程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java中的NAN和INFINITY,javaNANINFINITY

java中的NAN和INFINITY,javaNANINFINITY

編輯:JAVA綜合教程

java中的NAN和INFINITY,javaNANINFINITY


java浮點數運算中有兩個特殊的情況:NAN、INFINITY。

1、INFINITY:

在浮點數運算時,有時我們會遇到除數為0的情況,那java是如何解決的呢?

我們知道,在整型運算中,除數是不能為0的,否則直接運行錯誤。但是在浮點數運算中,引入了無限這個概念,我們來看一下Double和Float中的定義。

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;

 

那麼這些值對運算會有什麼影響呢:

    public static void main(String[] args) {

         float fPos=Float.POSITIVE_INFINITY;
         float fNeg=Float.NEGATIVE_INFINITY;
         double dPos=Double.POSITIVE_INFINITY;
         double dNeg=Double.NEGATIVE_INFINITY;
         
         //t1
         System.out.println(fPos==dPos);  //output: true
         System.out.println(fNeg==dNeg);  //output: true
         
         //t2
         System.out.println(fPos*0);  //output: NAN
         System.out.println(fNeg*0);  //output: NAN
         
         //t3
         System.out.println(fPos==(fPos+10000));  //output: true
         System.out.println(fPos==(fPos*10000));  //output: true
         System.out.println(fPos==(fPos/0));  //output: true//t4
         System.out.println(Double.isInfinite(dPos));  //output: true
         
    }

從上面幾組測試中我們可得出一些結論:

t1: Float中的無限和Double中的無限是相等的。

t2: 無限乘以0得到的值為NAN,即非數字,下文會詳細說明。

t3: 除了乘以0外,對無限值做運算所得的值還是無限

要判斷一個浮點數是否為INFINITY,可用t4中所示的isInfinite方法。

2、NAN

public static final double NaN = 0.0d / 0.0;

NAN表示非數字,它與任何值都不相等,甚至不等於它自己,所以要判斷一個數是否為NAN要用isNAN方法:

public static void main(String[] args) {
        double nan=Double.NaN;
        System.out.println(nan==nan);  //output: false
        System.out.println(Double.isNaN(nan));  //output: true
}

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved