W3cubDocs

/Ruby 4.0

class Float

Parent:
Numeric

A Float object stores a real number using the native architecture’s double-precision floating-point representation.

Float Imprecisions

Some real numbers can be represented precisely as Float objects:

37.5    # => 37.5
98.75   # => 98.75
12.3125 # => 12.3125

Others cannot; among these are the transcendental numbers, including:

  • Pi, π: in mathematics, a number of infinite precision: 3.1415926535897932384626433… (to 25 places); in Ruby, it is of limited precision (in this case, to 16 decimal places):

    Math::PI # => 3.141592653589793
    
  • Euler’s number, e: in mathematics, a number of infinite precision: 2.7182818284590452353602874… (to 25 places); in Ruby, it is of limited precision (in this case, to 15 decimal places):

    Math::E # => 2.718281828459045
    

Some floating-point computations in Ruby give precise results:

1.0/2   # => 0.5
100.0/8 # => 12.5

Others do not:

  • In mathematics, 2/3 as a decimal number is an infinitely-repeating decimal: 0.666… (forever); in Ruby, 2.0/3 is of limited precision (in this case, to 16 decimal places):

    2.0/3 # => 0.6666666666666666
    
  • In mathematics, the square root of 2 is an irrational number of infinite precision: 1.4142135623730950488016887… (to 25 decimal places); in Ruby, it is of limited precision (in this case, to 16 decimal places):

    Math.sqrt(2.0) # => 1.4142135623730951
    
  • Even a simple computation can introduce imprecision:

    x = 0.1 + 0.2 # => 0.30000000000000004
    y = 0.3       # => 0.3
    x == y        # => false
    

See:

Note that precise storage and computation of rational numbers is possible using Rational objects.

Creating a Float

You can create a Float object explicitly with:

You can convert certain objects to Floats with:

What’s Here

First, what’s elsewhere. Class Float:

Here, class Float provides methods for:

Querying

  • finite?: Returns whether self is finite.

  • hash: Returns the integer hash code for self.

  • infinite?: Returns whether self is infinite.

  • nan?: Returns whether self is a NaN (not-a-number).

Comparing

  • <: Returns whether self is less than the given value.

  • <=: Returns whether self is less than or equal to the given value.

  • <=>: Returns a number indicating whether self is less than, equal to, or greater than the given value.

  • == (aliased as === and eql?): Returns whether self is equal to the given value.

  • >: Returns whether self is greater than the given value.

  • >=: Returns whether self is greater than or equal to the given value.

Converting

  • % (aliased as modulo): Returns self modulo the given value.

  • *: Returns the product of self and the given value.

  • **: Returns the value of self raised to the power of the given value.

  • +: Returns the sum of self and the given value.

  • -: Returns the difference of self and the given value.

  • /: Returns the quotient of self and the given value.

  • ceil: Returns the smallest number greater than or equal to self.

  • coerce: Returns a 2-element array containing the given value converted to a Float and self

  • divmod: Returns a 2-element array containing the quotient and remainder results of dividing self by the given value.

  • fdiv: Returns the Float result of dividing self by the given value.

  • floor: Returns the greatest number smaller than or equal to self.

  • next_float: Returns the next-larger representable Float.

  • prev_float: Returns the next-smaller representable Float.

  • quo: Returns the quotient from dividing self by the given value.

  • round: Returns self rounded to the nearest value, to a given precision.

  • to_i (aliased as to_int): Returns self truncated to an Integer.

  • to_s (aliased as inspect): Returns a string containing the place-value representation of self in the given radix.

  • truncate: Returns self truncated to a given precision.

Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.