struct BSON::Decimal128
- BSON::Decimal128
- Struct
- Value
- Object
Overview
128-bit decimal floating point.
NOTE This implementation has been mostly ported from https://github.com/mongodb/bson-ruby/blob/master/lib/bson/decimal128.rb.
Performance is bad because it relies on a string representation of the value.
See: https://github.com/mongodb/specifications/blob/master/source/bson-decimal128/decimal128.rst
Defined in:
bson/decimal128.crConstant Summary
- 
        EXPONENT_OFFSET = 6176
- 
        Exponent offset. 
- 
        INFINITY_MASK = 8646911284551352320_i64.to_big_i
- 
        Infinity mask. 
- 
        INFINITY_REGEX = /^(\+|\-)?Inf(inity)?$/i
- 
        Regex matching a string representing positive or negative Infinity. 
- 
        INFINITY_STRING = "Infinity"
- 
        String representing an Infinity value. 
- 
        MAX_DIGITS_OF_PRECISION = 34
- 
        Maximum digits of precision. 
- 
        MAX_EXPONENT = 6111
- 
        Maximum exponent. 
- 
        MIN_EXPONENT = -6176
- 
        Minimum exponent. 
- 
        NAN_MASK = 8935141660703064064_i64.to_big_i
- 
        NaN mask. 
- 
        NAN_REGEX = /^(\-)?(S)?NaN$/i
- 
        Regex matching a string representing NaN. 
- 
        NAN_STRING = "NaN"
- 
        String representing a NaN value. 
- 
        SCIENTIFIC_EXPONENT_REGEX = /E\+?/i
- 
        Regex matching a scientific exponent. 
- 
        SIGN_AND_DIGITS_REGEX = /^(\-)?(\S+)/
- 
        Regex for separating a negative sign from the significands. 
- 
        SIGN_BIT_MASK = (1.to_big_i << 63)
- 
        Signed bit mask. 
- 
        SIGNIFICAND_WITH_LEADING_ZEROS_REGEX = /(0*)(\d+)/
- 
        Regex for the fraction, including leading zeros. 
- 
        SNAN_MASK = (1.to_big_i << 57)
- 
        SNaN mask. 
- 
        TRAILING_ZEROS_REGEX = /[1-9]*(0+)$/
- 
        Regex for capturing trailing zeros. 
- 
        TWO_HIGHEST_BITS_SET = (3.to_big_i << 61)
- 
        The two highest bits of the 64 high order bits. 
- 
        VALID_DECIMAL128_STRING_REGEX = /^[\-\+]?(\d+(\.\d*)?|\.\d+)(E[\-\+]?\d+)?$/i
- 
        Regex for a valid decimal128 string format. 
Constructors
- 
        .new(significand : BigInt, exponent : Int32, is_negative : Bool)
        
          Convert parts representing a Decimal128 into the corresponding bits. 
- .new(string : String)
- .new(big_decimal : BigDecimal)
- .new(bytes : Bytes)
Instance Method Summary
- 
        #bytes
        
          BSON byte representation. 
- #high : BigInt
- #infinity?
- #low : BigInt
- #nan?
- #negative?
- #to_big_d
- 
        #to_canonical_extjson(builder : JSON::Builder)
        
          Serialize to a canonical extended json representation. 
- #to_json(builder : JSON::Builder)
- 
        #to_s(io : IO)
        
          Same as #inspect(io).
Constructor Detail
Convert parts representing a Decimal128 into the corresponding bits.
Instance Method Detail
Serialize to a canonical extended json representation.
NOTE see https://github.com/mongodb/specifications/blob/master/source/extended-json.rst