1. Home
  2. Computing & Technology
  3. Ruby

Ruby's Class Hierarchy for Numbers

By Amanda & Michael Morin, About.com

All numbers are represented by some descendant of the Numeric class. All of these classes know how to perform operations on each other, so there's no need to worry about what type these numbers are. For example, you can multiply a native integer with a floating point number (a number with a decimal point) or a Bignum without knowing which is the native integer and which is the Bignum. Ruby can also readily convert between these numbers, without the programmer or the user having known it was done.

Native integers are represented by the Fixnum class. It's called Fixnum because it has a fixed size. These are the native binary numbers discussed above. They're fast, the computer knows how to work with them and they're everything more people will ever need.

When an operation between two Fixnum objects creates an overflow (a result too big for the Fixnum to store), Ruby will automatically convert the numbers to a Bignums, perform the operation again and store the result in a Bignum. The Bignum is returned from the operator and stored in the variable just like a Fixnum would be. The programmer doesn't have to know the Bignum even exists.

Try this in your IRB console. Assign the number 12 to a variable. Continually multiply that variable by itself and check the type of the number with the class instance. Eventually, you'll see the number turn from a Fixnum into a Bignum, silently and transparently.

irb(main):001:0> a = 12
=> 12
irb(main):002:0> a *= a
=> 144
irb(main):003:0> a.class
=> Fixnum
irb(main):004:0> a *= a
=> 20736
irb(main):005:0> a.class
=> Fixnum
irb(main):006:0> a *= a
=> 429981696
irb(main):007:0> a.class
=> Fixnum
irb(main):008:0> a *= a
=> 184884258895036416
irb(main):009:0> a.class
=> Bignum
irb(main):010:0>
Explore Ruby
By Category
About.com Special Features

Stay connected and entertained with reviews on tips on the latest HDTVs, cellphones and more. More >

Easy ways to connect two computers for networking purposes. More >

  1. Home
  2. Computing & Technology
  3. Ruby
  4. Advanced Ruby
  5. Ruby's Class Hierarchy for Numbers

©2009 About.com, a part of The New York Times Company.

All rights reserved.