2010-04-11 41 views
83

我有一個程序,試圖將double縮小到所需的數字。我得到的輸出是NaN在Java中,NaN是什麼意思?

NaN在Java中有什麼含義?

+0

在Java中使用NaN時,對NaN和常見陷阱有很好的描述:http://ppkwok.blogspot.co.uk/2012/11/java-cafe-1-never-write-nan-nan_24 .html – Phil 2012-11-25 01:56:00

回答

122

this page摘自:

「南」 代表 「不是一個數字」。如果浮點數 操作有一些輸入參數 導致操作產生 某些未定義的結果,則產生「Nan」 。例如, 0.0除以0.0在算術上未定義。取一個 負數的平方根也是未定義的。

+16

此外,NaN由IEEE標準浮點運算(IEEE 754)定義,它非常明確地指出哪些Java盲從。閱讀這個標準會讓你的眼睛看到很多東西,零值的多重值就是其中的一個。 – Esko 2010-04-11 18:57:14

+31

另外,'NaN'具有作爲唯一的「數字」的有趣屬性,當比較時,它與自身不同。因此,如果一個數字「x」是'NaN',一個常見的(並且在很多語言中是唯一的)測試如下:'布爾isNaN(x){return x!= x;}' – quazgar 2013-03-18 18:19:09

+0

正如一邊:JavaScript的本地' isNaN(...)'不像@ quazgar的函數那樣工作。相反,它在傳遞非數字時會返回'true',如原始字符串,對象或undefined。在這些情況下,'x!== x'會產生'false'。所以,quazgar的版本很好地檢查'x'是否是NaN *號*。 (我知道的問題是關於Java,而不是JavaScript。) – Arjan 2013-04-14 20:11:55

3

不是Java的人,但在JS和其他語言中,我使用它「不是數字」,這意味着某些操作導致它不是一個有效的數字。

3

它的字面意思是「不是數字」。我懷疑您的轉換過程出了問題。

退房在this reference

3

楠非數字部=不是數字。

8

NaN意思是「不是數」和是未定義的操作對浮點數像例如結果零除零。 (請注意,雖然在數學中將非零數字除以零通常也是未定義的,但它不會導致NaN,而是在正數或負數的情況下)。

4

NaN表示「不是數字」。這是一個特殊的浮點值,這意味着操作的結果沒有定義或不能表示爲實數。

有關此值的更多解釋,請參閱here

10

NaN裝置「不是數」和基本上是在IEE 754 floating point標準特殊浮點值的表示。 NaN通常表示該值是無法用有效浮點數表示的值。

當轉換的值是其他值時,例如轉換不代表數字的字符串時,轉換會導致此值。

3

意味着不是一個數字。 這是許多編程語言中不可能數值的常見表示。