Skip to content

abstract struct Float
inherits Number

Float is the base type of all floating point numbers.

There are two floating point types, Float32 and Float64, which correspond to the binary32 and binary64 types defined by IEEE.

A floating point literal is an optional + or - sign, followed by a sequence of numbers or underscores, followed by a dot, followed by numbers or underscores, followed by an optional exponent suffix, followed by an optional type suffix. If no suffix is present, the literal's type is Float64.

1.0     # Float64
1.0_f32 # Float32
1_f32   # Float32

1e10   # Float64
1.5e10 # Float64
1.5e-7 # Float64

+1.3 # Float64
-0.5 # Float64

The underscore _ before the suffix is optional.

Underscores can be used to make some numbers more readable:

1_000_000.111_111 # better than 1000000.111111

Included modules

Comparable Comparable Comparable

Direct known subclasses

BigFloat Float32 Float64

Class methods

.from_io(io : IO, format : IO::ByteFormat) : self

Reads a float from the given io in the given format. See also: IO#read_bytes.

View source

Methods

#%(other)

View source

#//(other)

Divides self by other using floored division.

The result will be of the same type as self.

View source

#<=>(other : BigRational)

View source

#<=>(other : BigDecimal)

The comparison operator. Returns 0 if the two objects are equal, a negative number if this object is considered less than other, a positive number if this object is considered greater than other, or nil if the two objects are not comparable.

Subclasses define this method to provide class-specific ordering.

The comparison operator is usually used to sort values:

# Sort in a descending way:
[3, 1, 2].sort { |x, y| y <=> x } # => [3, 2, 1]

# Sort in an ascending way:
[3, 1, 2].sort { |x, y| x <=> y } # => [1, 2, 3]
View source

#<=>(other : BigInt)

View source

#days : Time::Span

Returns a Time::Span of self days.

View source

#fdiv(other : BigInt | BigFloat | BigDecimal | BigRational) : self

View source

#finite?

View source

#hash(hasher)

View source

#hours : Time::Span

Returns a Time::Span of self hours.

View source

#infinite?

View source

#microseconds : Time::Span

Returns a Time::Span of self microseconds.

View source

#milliseconds : Time::Span

Returns a Time::Span of self milliseconds.

View source

#minutes : Time::Span

Returns a Time::Span of self minutes.

View source

#modulo(other)

View source

#nan?

View source

#nanoseconds : Time::Span

Returns a Time::Span of self nanoseconds.

View source

#remainder(other)

View source

#seconds : Time::Span

Returns a Time::Span of self seconds.

View source

#to_big_d

Converts self to BigDecimal.

Note

Floats are fundamentally less precise than BigDecimals, which makes conversion to them risky.

require "big"
1212341515125412412412421.0.to_big_d

View source

#to_big_i : BigInt

Returns a BigInt representing this float (rounded using floor).

require "big"

1212341515125412412412421.0.to_big_i

View source

#to_big_r

Returns a BigRational representing this float.

require "big"

123.0.to_big_r

View source

#to_io(io : IO, format : IO::ByteFormat)

Writes this float to the given io in the given format. See also: IO#write_bytes.

View source

#to_json(json : JSON::Builder)

View source

#to_json_object_key

View source

#weeks : Time::Span

Returns a Time::Span of self weeks.

View source