struct

Float32

Inherits Float / Comparable / Comparable / Comparable / Number / Comparable / Steppable / Comparable / Value / Object

Constants

DIGITS = 6

The number of decimal digits that can be represented without losing precision

EPSILON = 1.19209290e-07_f32

The machine epsilon (difference between 1.0 and the next representable value)

INFINITY = (1_f32 / 0_f32).as(Float32)
MANT_DIGITS = 24

The number of digits that can be represented without losing precision (in base RADIX)

MAX = 3.40282347e+38_f32

Largest finite value

MAX_10_EXP = 38

The maximum possible power of 10 exponent (such that 10**MAX_10_EXP is representable)

MAX_EXP = 128

The maximum possible normal power of 2 exponent

MIN = -3.40282347e+38_f32

Smallest finite value

MIN_10_EXP = -37

The minimum possible power of 10 exponent (such that 10**MIN_10_EXP is representable)

MIN_EXP = -125

The minimum possible normal power of 2 exponent

MIN_POSITIVE = 1.17549435e-38_f32

Smallest normal positive value, whose previous representable value is subnormal

MIN_SUBNORMAL = 1.0e-45_f32

Smallest representable positive value, whose previous representable value is zero

NAN = (0_f32 / 0_f32).as(Float32)
RADIX = 2

The radix or integer base used by the internal representation

Constructors

new(value : String, whitespace : Bool = true, strict : Bool = true) : self

Returns a Float32 by invoking String#to_f32 on value.

Float32.new "20"                        # => 20.0
Float32.new "  20  ", whitespace: false # raises ArgumentError: Invalid Float32: "  20  "
Source
new(pull : JSON::PullParser) : self
Source
new(value)

Returns a Float32 by invoking to_f32 on value.

Source
new!(value) : self

Returns a Float32 by invoking to_f32! on value.

Source
parse_hexfloat(str : String) : self

Returns a Float32 by parsing str as a hexadecimal-significand string.

The string format is defined in section 5.12.3 of IEEE 754-2008, and is the same as the %a specifier for sprintf. Unlike e.g. String#to_f, whitespace and underscores are not allowed. Non-finite values are also recognized.

Raises ArgumentError if str is not a valid hexadecimal-significand string.

Float32.parse_hexfloat("0x123.456p7")     # => 37282.6875_f32
Float32.parse_hexfloat("0x1.fffffep+127") # => Float32::MAX
Float32.parse_hexfloat("-inf")            # => -Float32::INFINITY
Float32.parse_hexfloat("0x1")             # Invalid hexfloat: expected 'p' or 'P' (ArgumentError)
Float32.parse_hexfloat("a.bp+3")          # Invalid hexfloat: expected '0' (ArgumentError)
Source

Class methods

from_json_object_key?(key : String) : Float32 | Nil
Source
parse_hexfloat?(str : String) : self | Nil

Returns a Float32 by parsing str as a hexadecimal-significand string, or nil if parsing fails.

The string format is defined in section 5.12.3 of IEEE 754-2008, and is the same as the %a specifier for sprintf. Unlike e.g. String#to_f, whitespace and underscores are not allowed. Non-finite values are also recognized.

Float32.parse_hexfloat?("0x123.456p7")     # => 37282.6875_f32
Float32.parse_hexfloat?("0x1.fffffep+127") # => Float32::MAX
Float32.parse_hexfloat?("-inf")            # => -Float32::INFINITY
Float32.parse_hexfloat?("0x1")             # => nil
Float32.parse_hexfloat?("a.bp+3")          # => nil
Source

Instance methods

!=(other : Int8) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Int16) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Int32) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Int64) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Int128) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : UInt8) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : UInt16) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : UInt32) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : UInt64) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : UInt128) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Float32) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
!=(other : Float64) : Bool

Returns true if self is not equal to other or if self and other are unordered.

Source
*(other : Int8) : self

Returns the result of multiplying self and other.

Source
*(other : Int16) : self

Returns the result of multiplying self and other.

Source
*(other : Int32) : self

Returns the result of multiplying self and other.

Source
*(other : Int64) : self

Returns the result of multiplying self and other.

Source
*(other : Int128) : self

Returns the result of multiplying self and other.

Source
*(other : UInt8) : self

Returns the result of multiplying self and other.

Source
*(other : UInt16) : self

Returns the result of multiplying self and other.

Source
*(other : UInt32) : self

Returns the result of multiplying self and other.

Source
*(other : UInt64) : self

Returns the result of multiplying self and other.

Source
*(other : UInt128) : self

Returns the result of multiplying self and other.

Source
*(other : Float32) : self

Returns the result of multiplying self and other.

Source
*(other : Float64) : self

Returns the result of multiplying self and other.

Source
**(other : Int32)
Source
**(other : Float32) : Float32
Source
**(other) : Float32
Source
+(other : Int8) : self

Returns the result of adding self and other.

Source
+(other : Int16) : self

Returns the result of adding self and other.

Source
+(other : Int32) : self

Returns the result of adding self and other.

Source
+(other : Int64) : self

Returns the result of adding self and other.

Source
+(other : Int128) : self

Returns the result of adding self and other.

Source
+(other : UInt8) : self

Returns the result of adding self and other.

Source
+(other : UInt16) : self

Returns the result of adding self and other.

Source
+(other : UInt32) : self

Returns the result of adding self and other.

Source
+(other : UInt64) : self

Returns the result of adding self and other.

Source
+(other : UInt128) : self

Returns the result of adding self and other.

Source
+(other : Float32) : self

Returns the result of adding self and other.

Source
+(other : Float64) : self

Returns the result of adding self and other.

Source
-(other : Int8) : self

Returns the result of subtracting self and other.

Source
-(other : Int16) : self

Returns the result of subtracting self and other.

Source
-(other : Int32) : self

Returns the result of subtracting self and other.

Source
-(other : Int64) : self

Returns the result of subtracting self and other.

Source
-(other : Int128) : self

Returns the result of subtracting self and other.

Source
-(other : UInt8) : self

Returns the result of subtracting self and other.

Source
-(other : UInt16) : self

Returns the result of subtracting self and other.

Source
-(other : UInt32) : self

Returns the result of subtracting self and other.

Source
-(other : UInt64) : self

Returns the result of subtracting self and other.

Source
-(other : UInt128) : self

Returns the result of subtracting self and other.

Source
-(other : Float32) : self

Returns the result of subtracting self and other.

Source
-(other : Float64) : self

Returns the result of subtracting self and other.

Source
-

Negates this value's sign.

Works on signed zeros and not-a-number values as well. The negation of 0.0_f32 is -0.0_f32, and vice versa. The negation of a not-a-number value is only observable via #sign_bit.

Source
/(other : Float32) : Float32

Returns the result of division self and other.

Source
/(other : Int8) : Float32
Source
/(other : UInt8) : Float32
Source
/(other : Int16) : Float32
Source
/(other : UInt16) : Float32
Source
/(other : Int32) : Float32
Source
/(other : UInt32) : Float32
Source
/(other : Int64) : Float32
Source
/(other : UInt64) : Float32
Source
/(other : Int128) : Float32
Source
/(other : UInt128) : Float32
Source
/(other : Float64) : Float64
Source
/(other : BigInt) : BigFloat
Source
<(other : Int8) : Bool

Returns true if self is less than other.

Source
<(other : Int16) : Bool

Returns true if self is less than other.

Source
<(other : Int32) : Bool

Returns true if self is less than other.

Source
<(other : Int64) : Bool

Returns true if self is less than other.

Source
<(other : Int128) : Bool

Returns true if self is less than other.

Source
<(other : UInt8) : Bool

Returns true if self is less than other.

Source
<(other : UInt16) : Bool

Returns true if self is less than other.

Source
<(other : UInt32) : Bool

Returns true if self is less than other.

Source
<(other : UInt64) : Bool

Returns true if self is less than other.

Source
<(other : UInt128) : Bool

Returns true if self is less than other.

Source
<(other : Float32) : Bool

Returns true if self is less than other.

Source
<(other : Float64) : Bool

Returns true if self is less than other.

Source
<=(other : Int8) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Int16) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Int32) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Int64) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Int128) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : UInt8) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : UInt16) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : UInt32) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : UInt64) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : UInt128) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Float32) : Bool

Returns true if self is less than or equal to other.

Source
<=(other : Float64) : Bool

Returns true if self is less than or equal to other.

Source
==(other : Int8) : Bool

Returns true if self is equal to other.

Source
==(other : Int16) : Bool

Returns true if self is equal to other.

Source
==(other : Int32) : Bool

Returns true if self is equal to other.

Source
==(other : Int64) : Bool

Returns true if self is equal to other.

Source
==(other : Int128) : Bool

Returns true if self is equal to other.

Source
==(other : UInt8) : Bool

Returns true if self is equal to other.

Source
==(other : UInt16) : Bool

Returns true if self is equal to other.

Source
==(other : UInt32) : Bool

Returns true if self is equal to other.

Source
==(other : UInt64) : Bool

Returns true if self is equal to other.

Source
==(other : UInt128) : Bool

Returns true if self is equal to other.

Source
==(other : Float32) : Bool

Returns true if self is equal to other.

Source
==(other : Float64) : Bool

Returns true if self is equal to other.

Source
>(other : Int8) : Bool

Returns true if self is greater than other.

Source
>(other : Int16) : Bool

Returns true if self is greater than other.

Source
>(other : Int32) : Bool

Returns true if self is greater than other.

Source
>(other : Int64) : Bool

Returns true if self is greater than other.

Source
>(other : Int128) : Bool

Returns true if self is greater than other.

Source
>(other : UInt8) : Bool

Returns true if self is greater than other.

Source
>(other : UInt16) : Bool

Returns true if self is greater than other.

Source
>(other : UInt32) : Bool

Returns true if self is greater than other.

Source
>(other : UInt64) : Bool

Returns true if self is greater than other.

Source
>(other : UInt128) : Bool

Returns true if self is greater than other.

Source
>(other : Float32) : Bool

Returns true if self is greater than other.

Source
>(other : Float64) : Bool

Returns true if self is greater than other.

Source
>=(other : Int8) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Int16) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Int32) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Int64) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Int128) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : UInt8) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : UInt16) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : UInt32) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : UInt64) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : UInt128) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Float32) : Bool

Returns true if self is greater than or equal to other.

Source
>=(other : Float64) : Bool

Returns true if self is greater than or equal to other.

Source
abs

Returns the absolute value of this number.

123.abs  # => 123
-123.abs # => 123
Source
ceil

Rounds towards positive infinity.

Source
clone
Source
fdiv(other : Int8) : self

Returns the float division of self and other.

Source
fdiv(other : Int16) : self

Returns the float division of self and other.

Source
fdiv(other : Int32) : self

Returns the float division of self and other.

Source
fdiv(other : Int64) : self

Returns the float division of self and other.

Source
fdiv(other : Int128) : self

Returns the float division of self and other.

Source
fdiv(other : UInt8) : self

Returns the float division of self and other.

Source
fdiv(other : UInt16) : self

Returns the float division of self and other.

Source
fdiv(other : UInt32) : self

Returns the float division of self and other.

Source
fdiv(other : UInt64) : self

Returns the float division of self and other.

Source
fdiv(other : UInt128) : self

Returns the float division of self and other.

Source
fdiv(other : Float32) : self

Returns the float division of self and other.

Source
fdiv(other : Float64) : self

Returns the float division of self and other.

Source
floor

Rounds towards negative infinity.

Source
infinite?

Checks whether this value is infinite. Returns 1 if this value is positive infinity, -1 if this value is negative infinity, or nil otherwise.

Source
next_float

Returns the least Float32 that is greater than self.

Source
prev_float

Returns the greatest Float32 that is less than self.

Source
round_away

Rounds towards the nearest integer. If both neighboring integers are equidistant, rounds away from zero.

Source
round_even

Rounds towards the nearest integer. If both neighboring integers are equidistant, rounds towards the even neighbor (Banker's rounding).

Source
sign_bit

Returns -1 if the sign bit of this float is set, 1 otherwise.

Unlike #sign, this works on signed zeros and not-a-numbers as well.

Source
to_f

Returns self converted to Float64. Raises OverflowError in case of overflow.

Source
to_f!

Returns self converted to Float64. In case of overflow infinity is returned.

Source
to_f32

Returns self converted to Float32. Raises OverflowError in case of overflow.

Source
to_f32!

Returns self converted to Float32. In case of overflow infinity is returned.

Source
to_f64

Returns self converted to Float64. Raises OverflowError in case of overflow.

Source
to_f64!

Returns self converted to Float64. In case of overflow infinity is returned.

Source
to_hexfloat(io : IO) : Nil

Writes self's hexadecimal-significand representation to the given io.

Source
to_hexfloat

Returns the hexadecimal-significand representation of self.

The string format is defined in section 5.12.3 of IEEE 754-2008, and is the same as the %a specifier for sprintf. The integral part of the returned string is 0 if self is subnormal, otherwise 1. The fractional part contains only significant digits.

1234.0625_f32.to_hexfloat          # => "0x1.3484p+10"
Float32::MAX.to_hexfloat           # => "0x1.fffffep+127"
Float32::MIN_SUBNORMAL.to_hexfloat # => "0x0.000002p-126"
Source
to_i

Returns self converted to Int32. Raises OverflowError in case of overflow.

Source
to_i!

Returns self converted to Int32. In case of overflow the result is undefined.

Source
to_i128

Returns self converted to Int128. Raises OverflowError in case of overflow.

Source
to_i128!

Returns self converted to Int128. In case of overflow the result is undefined.

Source
to_i16

Returns self converted to Int16. Raises OverflowError in case of overflow.

Source
to_i16!

Returns self converted to Int16. In case of overflow the result is undefined.

Source
to_i32

Returns self converted to Int32. Raises OverflowError in case of overflow.

Source
to_i32!

Returns self converted to Int32. In case of overflow the result is undefined.

Source
to_i64

Returns self converted to Int64. Raises OverflowError in case of overflow.

Source
to_i64!

Returns self converted to Int64. In case of overflow the result is undefined.

Source
to_i8

Returns self converted to Int8. Raises OverflowError in case of overflow.

Source
to_i8!

Returns self converted to Int8. In case of overflow the result is undefined.

Source
to_s(io : IO) : Nil

Prints a nicely readable and concise string representation of this object, typically intended for users, to io.

This method is called when an object is interpolated in a string literal:

"foo #{bar} baz" # calls bar.to_io with the builder for this string

IO#<< calls this method to append an object to itself:

io << bar # calls bar.to_s(io)

Thus implementations must not interpolate self in a string literal or call io << self which both would lead to an endless loop.

Also see #inspect(IO).

Source
to_s

Returns a nicely readable and concise string representation of this object, typically intended for users.

This method should usually not be overridden. It delegates to #to_s(IO) which can be overridden for custom implementations.

Also see #inspect.

Source
to_u

Returns self converted to UInt32. Raises OverflowError in case of overflow.

Source
to_u!

Returns self converted to UInt32. In case of overflow the result is undefined.

Source
to_u128

Returns self converted to UInt128. Raises OverflowError in case of overflow.

Source
to_u128!

Returns self converted to UInt128. In case of overflow the result is undefined.

Source
to_u16

Returns self converted to UInt16. Raises OverflowError in case of overflow.

Source
to_u16!

Returns self converted to UInt16. In case of overflow the result is undefined.

Source
to_u32

Returns self converted to UInt32. Raises OverflowError in case of overflow.

Source
to_u32!

Returns self converted to UInt32. In case of overflow the result is undefined.

Source
to_u64

Returns self converted to UInt64. Raises OverflowError in case of overflow.

Source
to_u64!

Returns self converted to UInt64. In case of overflow the result is undefined.

Source
to_u8

Returns self converted to UInt8. Raises OverflowError in case of overflow.

Source
to_u8!

Returns self converted to UInt8. In case of overflow the result is undefined.

Source
trunc

Rounds towards zero.

Source