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
¶
(io : IO, format : IO::ByteFormat) : self
Reads a float from the given io in the given format.
See also: IO#read_bytes
.
Methods¶
#//(other)
¶
(other)
Divides self
by other using floored division.
The result will be of the same type as self
.
#<=>(other : BigDecimal)
¶
(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]
#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
#to_big_i : BigInt
¶
: BigInt
Returns a BigInt
representing this float (rounded using floor
).
require "big"
1212341515125412412412421.0.to_big_i
#to_io(io : IO, format : IO::ByteFormat)
¶
(io : IO, format : IO::ByteFormat)
Writes this float to the given io in the given format.
See also: IO#write_bytes
.