What are the types of Infinity and NaN?

1.8k Views Asked by At

I can get Infinity and NaN by

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

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

but when I want to access Infinity or NaN directly:

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

What are Infinity and NaN? Are they objects, keywords, or something else?

2

There are 2 best solutions below

2
On BEST ANSWER

What you see printed as Infinity and NaN are just the string representations for two special instances of the Float class, not keywords or literals. They are returned by floating point division by 0 or by referencing the constants Float::INFINITY and Float::NAN.

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

Float::NAN.class
# => Float
Float::NAN.to_s
# => "NaN"
0
On

If you want inf/nan literal, use follow:

>> Float::INFINITY
=> Infinity
>> Float::NAN
=> NaN

See Float constants list