abstract struct Number
Overview
The top-level number type.
Included Modules
Direct Known Subclasses
Defined in:
number.crbig/big_float.cr
yaml/to_yaml.cr
complex.cr
Class Method Summary
Instance Method Summary
- #*(other : Complex)
- #*(other : BigFloat)
- #+(other : BigFloat)
- #+(other : Complex)
-
#+
Returns self.
- #-(other : Complex)
- #-(other : BigFloat)
- #/(other : Complex)
- #<=>(other : BigFloat)
-
#<=>(other)
Implements the comparison operator.
- #==(other : Complex)
-
#abs
Returns the absolute value of this number.
-
#abs2
Returns the square of
self(self * self). - #cis
-
#clamp(min, max)
Clamps a value between min and max.
-
#clamp(range : Range)
Clamps a value within range.
-
#divmod(number)
Returns a
Tupleof two elements containing the quotient and modulus obtained by dividingselfby number. - #i
-
#round(digits, base = 10)
Rounds this number to a given precision in decimal digits.
-
#sign
Returns the sign of this number as an Int32.
-
#significant(digits, base = 10)
Keeps digits significants digits of this number in the given base.
-
#step(*, to = nil, by = 1, &block)
Invokes the given block with the sequence of numbers starting at
self, incremented by by on each call, and with an optional to. - #step(*, to = nil, by = 1)
- #to_big_f
- #to_c
- #to_yaml(yaml : YAML::Builder)
Macro Summary
- [](*nums)
- slice(*nums)
-
static_array(*nums)
Creates a
StaticArrayofselfwith the given values, which will be casted to this type with thenewmethod (defined in eachNumbertype).
Instance methods inherited from module Comparable(BigFloat)
<(other : T)
<,
<=(other : T)
<=,
<=>(other : T)
<=>,
==(other : T)
==,
>(other : T)
>,
>=(other : T)
>=
Instance methods inherited from module Comparable(Number)
<(other : T)
<,
<=(other : T)
<=,
<=>(other : T)
<=>,
==(other : T)
==,
>(other : T)
>,
>=(other : T)
>=
Instance methods inherited from struct Value
==(other)
==,
dup
dup
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
Class Method Detail
Instance Method Detail
Clamps a value between min and max.
5.clamp(10, 100) # => 10
50.clamp(10, 100) # => 50
500.clamp(10, 100) # => 100Clamps a value within range.
5.clamp(10..100) # => 10
50.clamp(10..100) # => 50
500.clamp(10..100) # => 100Returns a Tuple of two elements containing the quotient
and modulus obtained by dividing self by number.
11.divmod(3) # => {3, 2}
11.divmod(-3) # => {-4, -1}Rounds this number to a given precision in decimal digits.
-1763.116.round(2) # => -1763.12Returns the sign of this number as an Int32.
- -1 if this number is negative
- 0 if this number is zero
- 1 if this number is positive
123.sign # => 1
0.sign # => 0
-42.sign # => -1Keeps digits significants digits of this number in the given base.
1234.567.significant(1) # => 1000
1234.567.significant(2) # => 1200
1234.567.significant(3) # => 1230
1234.567.significant(4) # => 1235
1234.567.significant(5) # => 1234.6
1234.567.significant(6) # => 1234.57
1234.567.significant(7) # => 1234.567
1234.567.significant(8) # => 1234.567
15.159.significant(1, base = 2) # => 16Invokes the given block with the sequence of numbers starting at self,
incremented by by on each call, and with an optional to.
3.step(to: 10, by: 2) do |n|
puts n
end
Output:
3
5
7
9Macro Detail
Creates an Array of self with the given values, which will be casted
to this type with the new method (defined in each Number type).
floats = Float64[1, 2, 3, 4]
floats.class # => Array(Float64)
ints = Int64[1, 2, 3]
ints.class # => Array(Int64)Creates a Slice of self with the given values, which will be casted
to this type with the new method (defined in each Number type).
The slice is allocated on the heap.
floats = Float64.slice(1, 2, 3, 4)
floats.class # => Slice(Float64)
ints = Int64.slice(1, 2, 3)
ints.class # => Slice(Int64)Creates a StaticArray of self with the given values, which will be casted
to this type with the new method (defined in each Number type).
floats = Float64.static_array(1, 2, 3, 4)
floats.class # => StaticArray(Float64, 4)
ints = Int64.static_array(1, 2, 3)
ints.class # => StaticArray(Int64, 3)