struct BigDecimal
Included Modules
Defined in:
Constant Summary
-
DEFAULT_MAX_DIV_ITERATIONS =
100_u64
-
TEN =
BigInt.new(10)
-
ZERO =
BigInt.new(0)
Constructors
-
.new(value : BigInt, scale : UInt64)
Creates a new
BigDecimal
fromBigInt
/UInt64
, which matches the internal representation. - .new(value : Int, scale : Int)
-
.new(str : String)
Creates a new
BigDecimal
from aString
. - .new(value : BigInt)
-
.new(num : Int)
Creates an new
BigDecimal
fromInt
. -
.new(num : Float)
Creating a
BigDecimal
fromFloat
. -
.new(num : BigDecimal)
Returns num.
- .new
Instance Method Summary
- #*(other : BigDecimal) : BigDecimal
- #+(other : BigDecimal) : BigDecimal
- #-(other : BigDecimal) : BigDecimal
- #/(other : BigDecimal) : BigDecimal
- #<=>(other : BigDecimal) : Int32
- #<=>(other : Int)
- #==(other : BigDecimal) : Bool
- #clone
-
#div(other : BigDecimal, max_div_iterations = DEFAULT_MAX_DIV_ITERATIONS) : BigDecimal
Divides self with another
BigDecimal
, with a optionally configurable max_div_iterations, which defines a maximum number of iterations in case the division is not exact. - #hash(hasher)
-
#normalize_quotient(other : BigDecimal, quotient : BigInt) : BigInt
Returns the quotient as absolutely negative if self and other have different signs, otherwise returns the quotient.
- #scale : UInt64
-
#scale_to(new_scale : BigDecimal) : BigDecimal
Scales a
BigDecimal
to anotherBigDecimal
, so they can be computed easier. - #to_big_d
- #to_f
-
#to_i
Converts to integer.
- #to_s(io : IO)
-
#to_u
Converts to unsigned integer.
- #value : BigInt
Instance methods inherited from module Comparable(BigDecimal)
<(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 Number
*(other : Complex)*(other : BigFloat) *, +(other : BigFloat)
+(other : Complex)
+ +, -(other : Complex)
-(other : BigFloat) -, /(other : Complex) /, <=>(other : BigFloat)
<=>(other) <=>, ==(other : Complex) ==, abs abs, abs2 abs2, cis cis, clamp(min, max)
clamp(range : Range) clamp, divmod(number) divmod, i i, round(digits, base = 10) round, sign sign, significant(digits, base = 10) significant, step(*, to = nil, by = 1)
step(*, to = nil, by = 1, &block) step, to_big_f to_big_f, to_c to_c, to_yaml(yaml : YAML::Nodes::Builder) to_yaml, zero? : Bool zero?
Constructor methods inherited from struct Number
zero : self
zero
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(hasher)
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 : String | IO) : self from_yaml
Constructor Detail
Creates a new BigDecimal
from a String
.
Allows only valid number strings with an optional negative sign.
Creating a BigDecimal
from Float
.
NOTE Floats are fundamentally less precise than BigDecimals, which makes initialization from them risky.
Returns num. Useful for generic code that does T.new(...)
with T
being a Number
.
Instance Method Detail
Divides self with another BigDecimal
, with a optionally configurable max_div_iterations, which
defines a maximum number of iterations in case the division is not exact.
BigDecimal(1).div(BigDecimal(2)) # => BigDecimal(@value=5, @scale=2)
BigDecimal(1).div(BigDecimal(3), 5) # => BigDecimal(@value=33333, @scale=5)
Returns the quotient as absolutely negative if self and other have different signs, otherwise returns the quotient.
Converts to unsigned integer. Truncates anything on the right side of the decimal point, converting negative to positive.