問題來源:用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