This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.

next_float

        # Float.next_float

(from ruby core)
---
    next_float -> float

---

Returns the next-larger representable Float.

These examples show the internally stored values (64-bit hexadecimal)
for each Float `f` and for the corresponding `f.next_float`:

    f = 0.0      # 0x0000000000000000
    f.next_float # 0x0000000000000001

    f = 0.01     # 0x3f847ae147ae147b
    f.next_float # 0x3f847ae147ae147c

In the remaining examples here, the output is shown in the usual way
(result `to_s`):

    0.01.next_float    # => 0.010000000000000002
    1.0.next_float     # => 1.0000000000000002
    100.0.next_float   # => 100.00000000000001

    f = 0.01
    (0..3).each_with_index {|i| printf "%2d %-20a %s\n", i, f, f.to_s; f = f.next_float }

Output:

     0 0x1.47ae147ae147bp-7 0.01
     1 0x1.47ae147ae147cp-7 0.010000000000000002
     2 0x1.47ae147ae147dp-7 0.010000000000000004
     3 0x1.47ae147ae147ep-7 0.010000000000000005

    f = 0.0; 100.times { f += 0.1 }
    f                           # => 9.99999999999998       # should be 10.0 in the ideal world.
    10-f                        # => 1.9539925233402755e-14 # the floating point error.
    10.0.next_float-10          # => 1.7763568394002505e-15 # 1 ulp (unit in the last place).
    (10-f)/(10.0.next_float-10) # => 11.0                   # the error is 11 ulp.
    (10-f)/(10*Float::EPSILON)  # => 8.8                    # approximation of the above.
    "%a" % 10                   # => "0x1.4p+3"
    "%a" % f                    # => "0x1.3fffffffffff5p+3" # the last hex digit is 5.  16 - 5 = 11 ulp.

Related: Float#prev_float



      

This is MURDOC! A Ruby documentation browser inspired by Smalltalk-80. It allows you to learn about Ruby by browsing through its class hierarchies, and see any of its methods.