Java正無窮大、負無窮大以及NaN

問題來源:用Java代碼寫了一個計算公式,包含除法和對數和取反,在頁面上出現了-infinity,不知道這是什麼問題,網上找答案才明白意思是負的無窮大。java

思考:爲何會出現這種狀況呢?這是哪裏的問題啊;sql

解決:根據一些博客上的分析,出現的緣由是除法的除數爲0,打印出用到的變量值,看到時間間隔變量是0,溯源到sql查詢的結果,sql是用的時間函數再運算的結果,提取出來運行,源數據相同 ,做減法確定是0了,再看一下數據庫中的數據列,全是同樣的狀況,可是實際上不該該是相同的時間,因此,開始時間和結束時間在插入的時候就有問題了,因此判斷不是個人問題,啊哈哈哈啊哈哈。數據庫

知識擴展:函數

在java語言中,提供了三個特殊的浮點數值:正無窮大、負無窮大和非數(NaN),功能是表示溢出和出錯。code

無窮大:一個正數除以0.0或一個負數除以0.0將獲得一個正無窮大或負無窮數(Infinity)。博客

非數:0.0除以0.0或着負數開方將獲得一個非數(NaN(「不是一個數字(Not a Number)」的縮寫))。數學

用法:it

任何浮點操做,只要它的一個或多個操做數爲NaN,那麼其結果爲NaN。class

NaN是非數字,參與算術運算都爲NaN,與其餘數字比較結果都爲false(包括本身)。變量

正無窮和負無窮仍然保持數學上的定義。

double i = 1.0 / 0;                  
System.out.println(i);             //Infinity  
System.out.println(i + 1);         //Infinity  
System.out.println(i == i + 1);    //true  
  
i = 0.0 / 0;  
System.out.println(i);             //NaN  
System.out.println(i + 1);         //NaN  
System.out.println(i == i + 1);    //false
相關文章
相關標籤/搜索