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)
-
#+
Returns self.
- #+(other : BigFloat)
- #+(other : Complex)
- #-(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(range : Range)
Clamps a value within
range
. -
#clamp(min, max)
Clamps a value between min and max.
-
#divmod(number)
Returns a
Tuple
of two elements containing the quotient and modulus obtained by dividing self 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(limit = nil, by = 1)
-
#step(limit = nil, by = 1, &block)
Invokes the given block with the sequence of numbers starting at
self
, incremented byby
on each call, and with an optionallimit
. - #to_big_f
- #to_c
- #to_yaml(yaml : YAML::Generator)
Macro Summary
-
[](*nums)
Creates an
Array
of self with the given values, which will be casted to this type with thenew
method (defined in each Number type). -
slice(*nums)
Creates a
Slice
of self with the given values, which will be casted to this type with thenew
method (defined in each Number type). -
static_array(*nums)
Creates a
StaticArray
of self with the given values, which will be casted to this type with thenew
method (defined in each Number type).
Instance methods inherited from module Comparable(T)
<(other : T)
<,
<=(other : T)
<=,
<=>(other : T)
<=>,
==(other : T)
==,
>(other : T)
>,
>=(other : T)
>=
Instance methods inherited from module Comparable(T)
<(other : T)
<,
<=(other : T)
<=,
<=>(other : T)
<=>,
==(other : T)
==,
>(other : T)
>,
>=(other : T)
>=
Instance methods inherited from struct Value
==(other)
==
Instance methods inherited from class Object
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other)===(other : YAML::Any)
===(other : JSON::Any) ===, =~(other) =~, class class, clone clone, crystal_type_id crystal_type_id, dup dup, hash hash, inspect
inspect(io : IO) inspect, itself itself, not_nil! not_nil!, tap(&block) tap, to_json to_json, to_pretty_json(io : IO)
to_pretty_json 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
==(other : Class)
==,
===(other)
===,
cast(other) : self
cast,
from_json(string_or_io) : self
from_json,
from_yaml(string : String) : self
from_yaml,
hash
hash,
inspect(io)
inspect,
name : String
name,
to_s(io)
to_s,
|(other : U.class)
|
Class Method Detail
Instance Method Detail
Clamps a value within range
.
5.clamp(10..100) # => 10
50.clamp(10..100) # => 50
500.clamp(10..100) # => 100
Clamps a value between min and max.
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) # => {-3, 2}
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 negative
- 0 if this number is zero
- 1 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 limit
.
3.step(by: 2, limit: 10) do |n|
puts n
end
Output:
3
5
7
9
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)