struct BigDecimal
Included Modules
Defined in:
big.crbig/big_decimal.cr
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 BigInt
/UInt64
, which matches the internal representation.
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.
Scales a BigDecimal
to another BigDecimal
, so they can be
computed easier.
Converts to unsigned integer. Truncates anything on the right side of the decimal point, converting negative to positive.