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
Constructors
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
Tuple
of two elements containing the quotient and modulus obtained by dividingself
by 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)
-
#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. - #to_big_f
- #to_c
- #to_yaml(yaml : YAML::Builder)
-
#zero? : Bool
Returns
true
if value is equal to zero.
Macro Summary
- [](*nums)
- slice(*nums, read_only = false)
-
static_array(*nums)
Creates a
StaticArray
ofself
with the given values, which will be casted to this type with thenew
method (defined in eachNumber
type).
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, unsafe_as(type : T.class) forall T unsafe_as
Constructor 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
Constructor 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) # => 100
Clamps a value within range.
5.clamp(10..100) # => 10
50.clamp(10..100) # => 50
500.clamp(10..100) # => 100
Returns 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.12
Returns the sign of this number as an Int32
.
-1
if this number is negative0
if this number is zero1
if this number is positive
123.sign # => 1
0.sign # => 0
-42.sign # => -1
Keeps 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) # => 16
Invokes 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
9
Returns true
if value is equal to zero.
0.zero? # => true
5.zero? # => false
Macro 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)