OpenQuizz
Une application de gestion des contenus pédagogiques
Decimal128 Class Reference
Inheritance diagram for Decimal128:
Collaboration diagram for Decimal128:

Public Member Functions

def __init__ (self, value)
 
def to_decimal (self)
 
def from_bid (cls, value)
 
def bid (self)
 
def __str__ (self)
 
def __repr__ (self)
 
def __setstate__ (self, value)
 
def __getstate__ (self)
 
def __eq__ (self, other)
 
def __ne__ (self, other)
 

Data Fields

 bid
 

Detailed Description

BSON Decimal128 type::

  >>> Decimal128(Decimal("0.0005"))
  Decimal128('0.0005')
  >>> Decimal128("0.0005")
  Decimal128('0.0005')
  >>> Decimal128((3474527112516337664, 5))
  Decimal128('0.0005')

:Parameters:
  - `value`: An instance of :class:`decimal.Decimal`, string, or tuple of
    (high bits, low bits) from Binary Integer Decimal (BID) format.

.. note:: :class:`~Decimal128` uses an instance of :class:`decimal.Context`
  configured for IEEE-754 Decimal128 when validating parameters.
  Signals like :class:`decimal.InvalidOperation`, :class:`decimal.Inexact`,
  and :class:`decimal.Overflow` are trapped and raised as exceptions::

    >>> Decimal128(".13.1")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]
    >>>
    >>> Decimal128("1E-6177")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.Inexact: [<class 'decimal.Inexact'>]
    >>>
    >>> Decimal128("1E6145")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ...
    decimal.Overflow: [<class 'decimal.Overflow'>, <class 'decimal.Rounded'>]

  To ensure the result of a calculation can always be stored as BSON
  Decimal128 use the context returned by
  :func:`create_decimal128_context`::

    >>> import decimal
    >>> decimal128_ctx = create_decimal128_context()
    >>> with decimal.localcontext(decimal128_ctx) as ctx:
    ...     Decimal128(ctx.create_decimal(".13.3"))
    ...
    Decimal128('NaN')
    >>>
    >>> with decimal.localcontext(decimal128_ctx) as ctx:
    ...     Decimal128(ctx.create_decimal("1E-6177"))
    ...
    Decimal128('0E-6176')
    >>>
    >>> with decimal.localcontext(DECIMAL128_CTX) as ctx:
    ...     Decimal128(ctx.create_decimal("1E6145"))
    ...
    Decimal128('Infinity')

  To match the behavior of MongoDB's Decimal128 implementation
  str(Decimal(value)) may not match str(Decimal128(value)) for NaN values::

    >>> Decimal128(Decimal('NaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('-NaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('sNaN'))
    Decimal128('NaN')
    >>> Decimal128(Decimal('-sNaN'))
    Decimal128('NaN')

  However, :meth:`~Decimal128.to_decimal` will return the exact value::

    >>> Decimal128(Decimal('NaN')).to_decimal()
    Decimal('NaN')
    >>> Decimal128(Decimal('-NaN')).to_decimal()
    Decimal('-NaN')
    >>> Decimal128(Decimal('sNaN')).to_decimal()
    Decimal('sNaN')
    >>> Decimal128(Decimal('-sNaN')).to_decimal()
    Decimal('-sNaN')

  Two instances of :class:`Decimal128` compare equal if their Binary
  Integer Decimal encodings are equal::

    >>> Decimal128('NaN') == Decimal128('NaN')
    True
    >>> Decimal128('NaN').bid == Decimal128('NaN').bid
    True

  This differs from :class:`decimal.Decimal` comparisons for NaN::

    >>> Decimal('NaN') == Decimal('NaN')
    False

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  value 
)

Member Function Documentation

◆ __eq__()

def __eq__ (   self,
  other 
)

◆ __getstate__()

def __getstate__ (   self)

◆ __ne__()

def __ne__ (   self,
  other 
)

◆ __repr__()

def __repr__ (   self)

◆ __setstate__()

def __setstate__ (   self,
  value 
)

◆ __str__()

def __str__ (   self)

◆ bid()

def bid (   self)
The Binary Integer Decimal (BID) encoding of this instance.

◆ from_bid()

def from_bid (   cls,
  value 
)
Create an instance of :class:`Decimal128` from Binary Integer
Decimal string.

:Parameters:
  - `value`: 16 byte string (128-bit IEEE 754-2008 decimal floating
    point in Binary Integer Decimal (BID) format).

◆ to_decimal()

def to_decimal (   self)
Returns an instance of :class:`decimal.Decimal` for this
:class:`Decimal128`.

Field Documentation

◆ bid

bid

The documentation for this class was generated from the following file: