chap 3

Number

Numeric
  |-Integer
      |-Fixnum
      |-Bignum
  |-Float
  |-Complex
  |-Rational
  |-BigDecimal (Standard Library)
$ Fixnum.ancestors
=> [Fixnum, Integer, Numeric, Comparable, Object, Kernel, BasicObject]

$ Fixnum.included_modules
=> [Comparable, Kernel]

Type

ex

Fixnum

1

Bignum

111111111111

Float

Imprecise

5.0

BigDecimal

precise

3.0

Complex

imaginary numbers

(1+0i)

Rational

represent fractions

(2/3)

Float vs BigDecimal (precision)

0.2 + 0.1 == 0.3
# false

require 'bigdecimal'
BigDecimal("0.2") + BigDecimal("0.1") == 0.3
# true

BigDecimal is 12 times slower than Float

Fixnum vs Bignum

1.class
# Fixnum

100000000000.class
# Bignum
1.object_id
# 3
1.object_id # id is not changed
# 3 

9999999999999999999999999999999999.object_id
# 70225433369420
9999999999999999999999999999999999.object_id # id is changed
# 70225433617420

Fixnum like symbols in the interpreter level.

Bignum normal class & uses normal object ids.

Last updated

Was this helpful?