2013-08-27 62 views
4

我可以Infinity和NaN有哪些類型?

n = 9.0/0 #=> Infinity 
n.class #=> Float 

m = 0/0.0 #=> NaN 
m.class #=> Float 

得到InfinityNaN但是當我要訪問InfinityNaN直接:

Infinity #=> uninitialized constant Infinity (NameError) 
NaN #=> uninitialized constant NaN (NameError) 

什麼是InfinityNaN?他們是對象,關鍵字還是其他東西?

回答

5

你看到打印的內容爲InfinityNaN只是爲Float類的兩個特殊情況下的字符串表示,不是關鍵字或文字。它們通過浮點除法返回0或通過引用常量Float::INFINITYFloat::NAN返回。

Float::INFINITY.class 
# => Float 
Float::INFINITY.to_s 
# => "Infinity" 

Float::NAN.class 
# => Float 
Float::NAN.to_s 
# => "NaN" 
+1

'Float :: INFINITY'用於表示一般的無窮大,例如, 'loop.size'也會返回它。 – Stefan

+0

我應該問別的,但我問了一些不同的..我會回來的問題..我想你在你的答案錯過了一些東西... :) –

相關問題