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 BigDecimalfromBigIntvalue andUInt64scale, which matches the internal representation.
- 
        .new(num : Float)
        
          Creates a new BigDecimalfromFloat.
- 
        .new(num : BigRational)
        
          Creates a new BigDecimalfromBigRational.
- 
        .new(num : BigDecimal)
        
          Returns num. 
- 
        .new(num : Int = 0, scale : Int = 0)
        
          Creates a new BigDecimalfromInt.
- 
        .new(str : String)
        
          Creates a new BigDecimalfrom aString.
Instance Method Summary
- #*(other : BigDecimal) : BigDecimal
- #*(other : Int)
- #+(other : BigDecimal) : BigDecimal
- #+(other : Int)
- #-(other : BigDecimal) : BigDecimal
- #-(other : Int)
- #- : BigDecimal
- #/(other : BigDecimal) : BigDecimal
- #/(other : Int)
- #<=>(other : Int | Float | BigRational)
- #<=>(other : BigDecimal) : Int32
- #==(other : BigDecimal) : Bool
- #clone
- 
        #div(other : BigDecimal, max_div_iterations = DEFAULT_MAX_DIV_ITERATIONS) : BigDecimal
        
          Divides selfwith anotherBigDecimal, with a optionally configurable max_div_iterations, which defines a maximum number of iterations in case the division is not exact.
- #hash(hasher)
- #inspect(io)
- 
        #normalize_quotient(other : BigDecimal, quotient : BigInt) : BigInt
        
          Returns the quotient as absolutely negative if selfand other have different signs, otherwise returns the quotient.
- #scale : UInt64
- 
        #scale_to(new_scale : BigDecimal) : BigDecimal
        
          Scales a BigDecimalto anotherBigDecimal, so they can be computed easier.
- #to_big_d
- 
        #to_big_f
        
          Converts to BigFloat.
- 
        #to_big_i
        
          Converts to BigInt.
- 
        #to_f
        
          Converts to Float64.
- 
        #to_f!
        
          Converts to Float64.
- 
        #to_f32
        
          Converts to Float32.
- 
        #to_f32!
        
          Converts to Float32.
- 
        #to_f64
        
          Converts to Float64.
- 
        #to_f64!
        
          Converts to Float64.
- 
        #to_i
        
          Converts to Int32.
- 
        #to_i!
        
          Converts to Int32.
- 
        #to_i16
        
          Converts to Int16.
- 
        #to_i16!
        
          Converts to Int16.
- 
        #to_i32
        
          Converts to Int32.
- 
        #to_i32!
        
          Converts to Int32.
- 
        #to_i64
        
          Converts to Int64.
- 
        #to_i64!
        
          Converts to Int64.
- 
        #to_i8
        
          Converts to Int8.
- 
        #to_i8!
        
          Converts to Int8.
- #to_s(io : IO)
- 
        #to_u
        
          Converts to UInt32.
- 
        #to_u!
        
          Converts to UInt32.
- 
        #to_u16
        
          Converts to UInt16.
- 
        #to_u16!
        
          Converts to UInt16.
- 
        #to_u32
        
          Converts to UInt32.
- 
        #to_u32!
        
          Converts to UInt32.
- 
        #to_u64
        
          Converts to UInt64.
- 
        #to_u64!
        
          Converts to UInt64.
- 
        #to_u8
        
          Converts to UInt8.
- 
        #to_u8!
        
          Converts to UInt8.
- #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(BigRational)
  
  
    
      <(other : T)
    <, 
    
  
    
      <=(other : T)
    <=, 
    
  
    
      <=>(other : T)
    <=>, 
    
  
    
      ==(other : T)
    ==, 
    
  
    
      >(other : T)
    >, 
    
  
    
      >=(other : T)
    >=
    
  
    
    
  
    
  Instance methods inherited from module Comparable(Float)
  
  
    
      <(other : T)
    <, 
    
  
    
      <=(other : T)
    <=, 
    
  
    
      <=>(other : T)
    <=>, 
    
  
    
      ==(other : T)
    ==, 
    
  
    
      >(other : T)
    >, 
    
  
    
      >=(other : T)
    >=
    
  
    
    
  
    
  Instance methods inherited from module Comparable(Int)
  
  
    
      <(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 : BigFloat)
<=>(other) <=>, ==(other : Complex) ==, abs abs, abs2 abs2, cis cis, clamp(min, max)
clamp(range : Range) clamp, divmod(number) divmod, i i, round(digits = 0, 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 : JSON::Any)==(other : YAML::Any)
==(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 value and UInt64 scale,
which matches the internal representation.
Creates a new 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.
Creates a new BigDecimal from a String.
Allows only valid number strings with an optional negative sign.
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 Int32. Truncates anything on the right side of the decimal point.
Raises OverflowError in case of overflow.
Converts to Int32. Truncates anything on the right side of the decimal point.
In case of overflow a wrapping is performed.
Converts to Int16. Truncates anything on the right side of the decimal point.
Raises OverflowError in case of overflow.
Converts to Int16. Truncates anything on the right side of the decimal point.
In case of overflow a wrapping is performed.
Converts to Int32. Truncates anything on the right side of the decimal point.
Raises OverflowError in case of overflow.
Converts to Int32. Truncates anything on the right side of the decimal point.
In case of overflow a wrapping is performed.
Converts to Int64. Truncates anything on the right side of the decimal point.
Raises OverflowError in case of overflow.
Converts to Int64. Truncates anything on the right side of the decimal point.
In case of overflow a wrapping is performed.
Converts to Int8. Truncates anything on the right side of the decimal point.
Raises OverflowError in case of overflow.
Converts to Int8. Truncates anything on the right side of the decimal point.
In case of overflow a wrapping is performed.
Converts to UInt32. Truncates anything on the right side of the decimal point,
converting negative to positive.
Raises OverflowError in case of overflow.
Converts to UInt32. Truncates anything on the right side of the decimal point,
converting negative to positive.
In case of overflow a wrapping is performed.
Converts to UInt16. Truncates anything on the right side of the decimal point,
converting negative to positive.
Raises OverflowError in case of overflow.
Converts to UInt16. Truncates anything on the right side of the decimal point,
converting negative to positive.
In case of overflow a wrapping is performed.
Converts to UInt32. Truncates anything on the right side of the decimal point,
converting negative to positive.
Raises OverflowError in case of overflow.
Converts to UInt32. Truncates anything on the right side of the decimal point,
converting negative to positive.
In case of overflow a wrapping is performed.
Converts to UInt64. Truncates anything on the right side of the decimal point,
converting negative to positive.
Raises OverflowError in case of overflow.
Converts to UInt64. Truncates anything on the right side of the decimal point,
converting negative to positive.
In case of overflow a wrapping is performed.
Converts to UInt8. Truncates anything on the right side of the decimal point,
converting negative to positive.
Raises OverflowError in case of overflow.