Fix decimal repr which should have used single quotes like other reprs.
This commit is contained in:
parent
ddb164a651
commit
abe3237187
|
@ -51,10 +51,10 @@ arithmetic. It offers several advantages over the :class:`float` datatype:
|
|||
|
||||
>>> getcontext().prec = 6
|
||||
>>> Decimal(1) / Decimal(7)
|
||||
Decimal("0.142857")
|
||||
Decimal('0.142857')
|
||||
>>> getcontext().prec = 28
|
||||
>>> Decimal(1) / Decimal(7)
|
||||
Decimal("0.1428571428571428571428571429")
|
||||
Decimal('0.1428571428571428571428571429')
|
||||
|
||||
* Both binary and decimal floating point are implemented in terms of published
|
||||
standards. While the built-in float type exposes only a modest portion of its
|
||||
|
@ -133,19 +133,19 @@ representation error). Decimal numbers include special values such as
|
|||
:const:`Infinity`, and :const:`-0`. ::
|
||||
|
||||
>>> Decimal(10)
|
||||
Decimal("10")
|
||||
>>> Decimal("3.14")
|
||||
Decimal("3.14")
|
||||
Decimal('10')
|
||||
>>> Decimal('3.14')
|
||||
Decimal('3.14')
|
||||
>>> Decimal((0, (3, 1, 4), -2))
|
||||
Decimal("3.14")
|
||||
Decimal('3.14')
|
||||
>>> Decimal(str(2.0 ** 0.5))
|
||||
Decimal("1.41421356237")
|
||||
>>> Decimal(2) ** Decimal("0.5")
|
||||
Decimal("1.414213562373095048801688724")
|
||||
>>> Decimal("NaN")
|
||||
Decimal("NaN")
|
||||
>>> Decimal("-Infinity")
|
||||
Decimal("-Infinity")
|
||||
Decimal('1.41421356237')
|
||||
>>> Decimal(2) ** Decimal('0.5')
|
||||
Decimal('1.414213562373095048801688724')
|
||||
>>> Decimal('NaN')
|
||||
Decimal('NaN')
|
||||
>>> Decimal('-Infinity')
|
||||
Decimal('-Infinity')
|
||||
|
||||
The significance of a new Decimal is determined solely by the number of digits
|
||||
input. Context precision and rounding only come into play during arithmetic
|
||||
|
@ -153,28 +153,28 @@ operations. ::
|
|||
|
||||
>>> getcontext().prec = 6
|
||||
>>> Decimal('3.0')
|
||||
Decimal("3.0")
|
||||
Decimal('3.0')
|
||||
>>> Decimal('3.1415926535')
|
||||
Decimal("3.1415926535")
|
||||
Decimal('3.1415926535')
|
||||
>>> Decimal('3.1415926535') + Decimal('2.7182818285')
|
||||
Decimal("5.85987")
|
||||
Decimal('5.85987')
|
||||
>>> getcontext().rounding = ROUND_UP
|
||||
>>> Decimal('3.1415926535') + Decimal('2.7182818285')
|
||||
Decimal("5.85988")
|
||||
Decimal('5.85988')
|
||||
|
||||
Decimals interact well with much of the rest of Python. Here is a small decimal
|
||||
floating point flying circus::
|
||||
|
||||
>>> data = map(Decimal, '1.34 1.87 3.45 2.35 1.00 0.03 9.25'.split())
|
||||
>>> max(data)
|
||||
Decimal("9.25")
|
||||
Decimal('9.25')
|
||||
>>> min(data)
|
||||
Decimal("0.03")
|
||||
Decimal('0.03')
|
||||
>>> sorted(data)
|
||||
[Decimal("0.03"), Decimal("1.00"), Decimal("1.34"), Decimal("1.87"),
|
||||
Decimal("2.35"), Decimal("3.45"), Decimal("9.25")]
|
||||
[Decimal('0.03'), Decimal('1.00'), Decimal('1.34'), Decimal('1.87'),
|
||||
Decimal('2.35'), Decimal('3.45'), Decimal('9.25')]
|
||||
>>> sum(data)
|
||||
Decimal("19.29")
|
||||
Decimal('19.29')
|
||||
>>> a,b,c = data[:3]
|
||||
>>> str(a)
|
||||
'1.34'
|
||||
|
@ -185,31 +185,31 @@ floating point flying circus::
|
|||
>>> int(a)
|
||||
1
|
||||
>>> a * 5
|
||||
Decimal("6.70")
|
||||
Decimal('6.70')
|
||||
>>> a * b
|
||||
Decimal("2.5058")
|
||||
Decimal('2.5058')
|
||||
>>> c % a
|
||||
Decimal("0.77")
|
||||
Decimal('0.77')
|
||||
|
||||
And some mathematical functions are also available to Decimal::
|
||||
|
||||
>>> Decimal(2).sqrt()
|
||||
Decimal("1.414213562373095048801688724")
|
||||
Decimal('1.414213562373095048801688724')
|
||||
>>> Decimal(1).exp()
|
||||
Decimal("2.718281828459045235360287471")
|
||||
>>> Decimal("10").ln()
|
||||
Decimal("2.302585092994045684017991455")
|
||||
>>> Decimal("10").log10()
|
||||
Decimal("1")
|
||||
Decimal('2.718281828459045235360287471')
|
||||
>>> Decimal('10').ln()
|
||||
Decimal('2.302585092994045684017991455')
|
||||
>>> Decimal('10').log10()
|
||||
Decimal('1')
|
||||
|
||||
The :meth:`quantize` method rounds a number to a fixed exponent. This method is
|
||||
useful for monetary applications that often round results to a fixed number of
|
||||
places::
|
||||
|
||||
>>> Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
|
||||
Decimal("7.32")
|
||||
Decimal('7.32')
|
||||
>>> Decimal('7.325').quantize(Decimal('1.'), rounding=ROUND_UP)
|
||||
Decimal("8")
|
||||
Decimal('8')
|
||||
|
||||
As shown above, the :func:`getcontext` function accesses the current context and
|
||||
allows the settings to be changed. This approach meets the needs of most
|
||||
|
@ -227,16 +227,16 @@ enabled::
|
|||
>>> myothercontext = Context(prec=60, rounding=ROUND_HALF_DOWN)
|
||||
>>> setcontext(myothercontext)
|
||||
>>> Decimal(1) / Decimal(7)
|
||||
Decimal("0.142857142857142857142857142857142857142857142857142857142857")
|
||||
Decimal('0.142857142857142857142857142857142857142857142857142857142857')
|
||||
|
||||
>>> ExtendedContext
|
||||
Context(prec=9, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999,
|
||||
capitals=1, flags=[], traps=[])
|
||||
>>> setcontext(ExtendedContext)
|
||||
>>> Decimal(1) / Decimal(7)
|
||||
Decimal("0.142857143")
|
||||
Decimal('0.142857143')
|
||||
>>> Decimal(42) / Decimal(0)
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
|
||||
>>> setcontext(BasicContext)
|
||||
>>> Decimal(42) / Decimal(0)
|
||||
|
@ -253,7 +253,7 @@ using the :meth:`clear_flags` method. ::
|
|||
>>> setcontext(ExtendedContext)
|
||||
>>> getcontext().clear_flags()
|
||||
>>> Decimal(355) / Decimal(113)
|
||||
Decimal("3.14159292")
|
||||
Decimal('3.14159292')
|
||||
>>> getcontext()
|
||||
Context(prec=9, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999,
|
||||
capitals=1, flags=[Inexact, Rounded], traps=[])
|
||||
|
@ -266,7 +266,7 @@ Individual traps are set using the dictionary in the :attr:`traps` field of a
|
|||
context::
|
||||
|
||||
>>> Decimal(1) / Decimal(0)
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
>>> getcontext().traps[DivisionByZero] = 1
|
||||
>>> Decimal(1) / Decimal(0)
|
||||
Traceback (most recent call last):
|
||||
|
@ -294,7 +294,7 @@ Decimal objects
|
|||
Construct a new :class:`Decimal` object based from *value*.
|
||||
|
||||
*value* can be an integer, string, tuple, or another :class:`Decimal`
|
||||
object. If no *value* is given, returns ``Decimal("0")``. If *value* is a
|
||||
object. If no *value* is given, returns ``Decimal('0')``. If *value* is a
|
||||
string, it should conform to the decimal numeric string syntax after leading
|
||||
and trailing whitespace characters are removed::
|
||||
|
||||
|
@ -312,11 +312,11 @@ Decimal objects
|
|||
If *value* is a :class:`tuple`, it should have three components, a sign
|
||||
(:const:`0` for positive or :const:`1` for negative), a :class:`tuple` of
|
||||
digits, and an integer exponent. For example, ``Decimal((0, (1, 4, 1, 4), -3))``
|
||||
returns ``Decimal("1.414")``.
|
||||
returns ``Decimal('1.414')``.
|
||||
|
||||
The *context* precision does not affect how many digits are stored. That is
|
||||
determined exclusively by the number of digits in *value*. For example,
|
||||
``Decimal("3.00000")`` records all five zeros even if the context precision is
|
||||
``Decimal('3.00000')`` records all five zeros even if the context precision is
|
||||
only three.
|
||||
|
||||
The purpose of the *context* argument is determining what to do if *value* is a
|
||||
|
@ -343,7 +343,7 @@ also have a number of specialized methods:
|
|||
.. method:: Decimal.adjusted()
|
||||
|
||||
Return the adjusted exponent after shifting out the coefficient's rightmost
|
||||
digits until only the lead digit remains: ``Decimal("321e+5").adjusted()``
|
||||
digits until only the lead digit remains: ``Decimal('321e+5').adjusted()``
|
||||
returns seven. Used for determining the position of the most significant digit
|
||||
with respect to the decimal point.
|
||||
|
||||
|
@ -373,10 +373,10 @@ also have a number of specialized methods:
|
|||
instance rather than an integer, and if either operand is a NaN
|
||||
then the result is a NaN::
|
||||
|
||||
a or b is a NaN ==> Decimal("NaN")
|
||||
a < b ==> Decimal("-1")
|
||||
a == b ==> Decimal("0")
|
||||
a > b ==> Decimal("1")
|
||||
a or b is a NaN ==> Decimal('NaN')
|
||||
a < b ==> Decimal('-1')
|
||||
a == b ==> Decimal('0')
|
||||
a > b ==> Decimal('1')
|
||||
|
||||
.. method:: Decimal.compare_signal(other[, context])
|
||||
|
||||
|
@ -396,14 +396,14 @@ also have a number of specialized methods:
|
|||
value but different representations compare unequal in this
|
||||
ordering::
|
||||
|
||||
>>> Decimal("12.0").compare_total(Decimal("12"))
|
||||
Decimal("-1")
|
||||
>>> Decimal('12.0').compare_total(Decimal('12'))
|
||||
Decimal('-1')
|
||||
|
||||
Quiet and signaling NaNs are also included in the total ordering.
|
||||
The result of this function is ``Decimal("0")`` if both operands
|
||||
have the same representation, ``Decimal("-1")`` if the first
|
||||
The result of this function is ``Decimal('0')`` if both operands
|
||||
have the same representation, ``Decimal('-1')`` if the first
|
||||
operand is lower in the total order than the second, and
|
||||
``Decimal("1")`` if the first operand is higher in the total order
|
||||
``Decimal('1')`` if the first operand is higher in the total order
|
||||
than the second operand. See the specification for details of the
|
||||
total order.
|
||||
|
||||
|
@ -439,8 +439,8 @@ also have a number of specialized methods:
|
|||
Return a copy of the first operand with the sign set to be the
|
||||
same as the sign of the second operand. For example::
|
||||
|
||||
>>> Decimal("2.3").copy_sign(Decimal("-1.5"))
|
||||
Decimal("-2.3")
|
||||
>>> Decimal('2.3').copy_sign(Decimal('-1.5'))
|
||||
Decimal('-2.3')
|
||||
|
||||
This operation is unaffected by the context and is quiet: no flags
|
||||
are changed and no rounding is performed.
|
||||
|
@ -454,9 +454,9 @@ also have a number of specialized methods:
|
|||
:const:`ROUND_HALF_EVEN` rounding mode.
|
||||
|
||||
>>> Decimal(1).exp()
|
||||
Decimal("2.718281828459045235360287471")
|
||||
Decimal('2.718281828459045235360287471')
|
||||
>>> Decimal(321).exp()
|
||||
Decimal("2.561702493119680037517373933E+139")
|
||||
Decimal('2.561702493119680037517373933E+139')
|
||||
|
||||
.. versionadded:: 2.6
|
||||
|
||||
|
@ -466,7 +466,7 @@ also have a number of specialized methods:
|
|||
the intermediate product self*other.
|
||||
|
||||
>>> Decimal(2).fma(3, 5)
|
||||
Decimal("11")
|
||||
Decimal('11')
|
||||
|
||||
.. versionadded:: 2.6
|
||||
|
||||
|
@ -563,9 +563,9 @@ also have a number of specialized methods:
|
|||
|
||||
For a nonzero number, return the adjusted exponent of its operand
|
||||
as a :class:`Decimal` instance. If the operand is a zero then
|
||||
``Decimal("-Infinity")`` is returned and the
|
||||
``Decimal('-Infinity')`` is returned and the
|
||||
:const:`DivisionByZero` flag is raised. If the operand is an
|
||||
infinity then ``Decimal("Infinity")`` is returned.
|
||||
infinity then ``Decimal('Infinity')`` is returned.
|
||||
|
||||
.. versionadded:: 2.6
|
||||
|
||||
|
@ -655,10 +655,10 @@ also have a number of specialized methods:
|
|||
.. method:: Decimal.normalize([context])
|
||||
|
||||
Normalize the number by stripping the rightmost trailing zeros and converting
|
||||
any result equal to :const:`Decimal("0")` to :const:`Decimal("0e0")`. Used for
|
||||
any result equal to :const:`Decimal('0')` to :const:`Decimal('0e0')`. Used for
|
||||
producing canonical values for members of an equivalence class. For example,
|
||||
``Decimal("32.100")`` and ``Decimal("0.321000e+2")`` both normalize to the
|
||||
equivalent value ``Decimal("32.1")``.
|
||||
``Decimal('32.100')`` and ``Decimal('0.321000e+2')`` both normalize to the
|
||||
equivalent value ``Decimal('32.1')``.
|
||||
|
||||
.. method:: Decimal.number_class([context])
|
||||
|
||||
|
@ -683,8 +683,8 @@ also have a number of specialized methods:
|
|||
Return a value equal to the first operand after rounding and
|
||||
having the exponent of the second operand.
|
||||
|
||||
>>> Decimal("1.41421356").quantize(Decimal("1.000"))
|
||||
Decimal("1.414")
|
||||
>>> Decimal('1.41421356').quantize(Decimal('1.000'))
|
||||
Decimal('1.414')
|
||||
|
||||
Unlike other operations, if the length of the coefficient after the
|
||||
quantize operation would be greater than precision, then an
|
||||
|
@ -716,7 +716,7 @@ also have a number of specialized methods:
|
|||
|
||||
Compute the modulo as either a positive or negative value depending on which is
|
||||
closest to zero. For instance, ``Decimal(10).remainder_near(6)`` returns
|
||||
``Decimal("-2")`` which is closer to zero than ``Decimal("4")``.
|
||||
``Decimal('-2')`` which is closer to zero than ``Decimal('4')``.
|
||||
|
||||
If both are equally close, the one chosen will have the same sign as *self*.
|
||||
|
||||
|
@ -771,7 +771,7 @@ also have a number of specialized methods:
|
|||
|
||||
Engineering notation has an exponent which is a multiple of 3, so there are up
|
||||
to 3 digits left of the decimal place. For example, converts
|
||||
``Decimal('123E+1')`` to ``Decimal("1.23E+3")``
|
||||
``Decimal('123E+1')`` to ``Decimal('1.23E+3')``
|
||||
|
||||
.. method:: Decimal.to_integral([rounding[, context]])
|
||||
|
||||
|
@ -985,10 +985,10 @@ method. For example, ``C.exp(x)`` is equivalent to
|
|||
change the result::
|
||||
|
||||
>>> getcontext().prec = 3
|
||||
>>> Decimal("3.4445") + Decimal("1.0023")
|
||||
Decimal("4.45")
|
||||
>>> Decimal("3.4445") + Decimal(0) + Decimal("1.0023")
|
||||
Decimal("4.44")
|
||||
>>> Decimal('3.4445') + Decimal('1.0023')
|
||||
Decimal('4.45')
|
||||
>>> Decimal('3.4445') + Decimal(0) + Decimal('1.0023')
|
||||
Decimal('4.44')
|
||||
|
||||
This method implements the to-number operation of the IBM
|
||||
specification. If the argument is a string, no leading or trailing
|
||||
|
@ -1247,15 +1247,15 @@ properties of addition::
|
|||
|
||||
>>> u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')
|
||||
>>> (u + v) + w
|
||||
Decimal("9.5111111")
|
||||
Decimal('9.5111111')
|
||||
>>> u + (v + w)
|
||||
Decimal("10")
|
||||
Decimal('10')
|
||||
|
||||
>>> u, v, w = Decimal(20000), Decimal(-6), Decimal('6.0000003')
|
||||
>>> (u*v) + (u*w)
|
||||
Decimal("0.01")
|
||||
Decimal('0.01')
|
||||
>>> u * (v+w)
|
||||
Decimal("0.0060000")
|
||||
Decimal('0.0060000')
|
||||
|
||||
The :mod:`decimal` module makes it possible to restore the identities by
|
||||
expanding the precision sufficiently to avoid loss of significance::
|
||||
|
@ -1263,15 +1263,15 @@ expanding the precision sufficiently to avoid loss of significance::
|
|||
>>> getcontext().prec = 20
|
||||
>>> u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')
|
||||
>>> (u + v) + w
|
||||
Decimal("9.51111111")
|
||||
Decimal('9.51111111')
|
||||
>>> u + (v + w)
|
||||
Decimal("9.51111111")
|
||||
Decimal('9.51111111')
|
||||
>>>
|
||||
>>> u, v, w = Decimal(20000), Decimal(-6), Decimal('6.0000003')
|
||||
>>> (u*v) + (u*w)
|
||||
Decimal("0.0060000")
|
||||
Decimal('0.0060000')
|
||||
>>> u * (v+w)
|
||||
Decimal("0.0060000")
|
||||
Decimal('0.0060000')
|
||||
|
||||
|
||||
Special values
|
||||
|
@ -1327,7 +1327,7 @@ normalized floating point representations, it is not immediately obvious that
|
|||
the following calculation returns a value equal to zero::
|
||||
|
||||
>>> 1 / Decimal('Infinity')
|
||||
Decimal("0E-1000000026")
|
||||
Decimal('0E-1000000026')
|
||||
|
||||
.. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
@ -1538,7 +1538,7 @@ minimize typing when using the interactive interpreter?
|
|||
|
||||
>>> D = decimal.Decimal
|
||||
>>> D('1.23') + D('3.45')
|
||||
Decimal("4.68")
|
||||
Decimal('4.68')
|
||||
|
||||
Q. In a fixed-point application with two decimal places, some inputs have many
|
||||
places and need to be rounded. Others are not supposed to have excess digits
|
||||
|
@ -1550,14 +1550,14 @@ the :const:`Inexact` trap is set, it is also useful for validation::
|
|||
>>> TWOPLACES = Decimal(10) ** -2 # same as Decimal('0.01')
|
||||
|
||||
>>> # Round to two places
|
||||
>>> Decimal("3.214").quantize(TWOPLACES)
|
||||
Decimal("3.21")
|
||||
>>> Decimal('3.214').quantize(TWOPLACES)
|
||||
Decimal('3.21')
|
||||
|
||||
>>> # Validate that a number does not exceed two places
|
||||
>>> Decimal("3.21").quantize(TWOPLACES, context=Context(traps=[Inexact]))
|
||||
Decimal("3.21")
|
||||
>>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact]))
|
||||
Decimal('3.21')
|
||||
|
||||
>>> Decimal("3.214").quantize(TWOPLACES, context=Context(traps=[Inexact]))
|
||||
>>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact]))
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
Inexact: Changed in rounding
|
||||
|
@ -1579,7 +1579,7 @@ representative::
|
|||
|
||||
>>> values = map(Decimal, '200 200.000 2E2 .02E+4'.split())
|
||||
>>> [v.normalize() for v in values]
|
||||
[Decimal("2E+2"), Decimal("2E+2"), Decimal("2E+2"), Decimal("2E+2")]
|
||||
[Decimal('2E+2'), Decimal('2E+2'), Decimal('2E+2'), Decimal('2E+2')]
|
||||
|
||||
Q. Some decimal values always print with exponential notation. Is there a way
|
||||
to get a non-exponential representation?
|
||||
|
@ -1607,7 +1607,7 @@ suggest, so we trap :const:`Inexact` to signal a need for more precision::
|
|||
ctx.prec += 1
|
||||
|
||||
>>> float_to_decimal(math.pi)
|
||||
Decimal("3.141592653589793115997963468544185161590576171875")
|
||||
Decimal('3.141592653589793115997963468544185161590576171875')
|
||||
|
||||
Q. Why isn't the :func:`float_to_decimal` routine included in the module?
|
||||
|
||||
|
@ -1616,7 +1616,7 @@ decimal floating point. Also, its use requires some care to avoid the
|
|||
representation issues associated with binary floating point::
|
||||
|
||||
>>> float_to_decimal(1.1)
|
||||
Decimal("1.100000000000000088817841970012523233890533447265625")
|
||||
Decimal('1.100000000000000088817841970012523233890533447265625')
|
||||
|
||||
Q. Within a complex calculation, how can I make sure that I haven't gotten a
|
||||
spurious result because of insufficient precision or rounding anomalies.
|
||||
|
@ -1637,20 +1637,20 @@ results can look odd if you forget that the inputs haven't been rounded::
|
|||
|
||||
>>> getcontext().prec = 3
|
||||
>>> Decimal('3.104') + D('2.104')
|
||||
Decimal("5.21")
|
||||
Decimal('5.21')
|
||||
>>> Decimal('3.104') + D('0.000') + D('2.104')
|
||||
Decimal("5.20")
|
||||
Decimal('5.20')
|
||||
|
||||
The solution is either to increase precision or to force rounding of inputs
|
||||
using the unary plus operation::
|
||||
|
||||
>>> getcontext().prec = 3
|
||||
>>> +Decimal('1.23456789') # unary plus triggers rounding
|
||||
Decimal("1.23")
|
||||
Decimal('1.23')
|
||||
|
||||
Alternatively, inputs can be rounded upon creation using the
|
||||
:meth:`Context.create_decimal` method::
|
||||
|
||||
>>> Context(prec=5, rounding=ROUND_DOWN).create_decimal('1.2345678')
|
||||
Decimal("1.2345")
|
||||
Decimal('1.2345')
|
||||
|
||||
|
|
484
Lib/decimal.py
484
Lib/decimal.py
|
@ -35,26 +35,26 @@ issues associated with binary floating point. The package is especially
|
|||
useful for financial applications or for contexts where users have
|
||||
expectations that are at odds with binary floating point (for instance,
|
||||
in binary floating point, 1.00 % 0.1 gives 0.09999999999999995 instead
|
||||
of the expected Decimal("0.00") returned by decimal floating point).
|
||||
of the expected Decimal('0.00') returned by decimal floating point).
|
||||
|
||||
Here are some examples of using the decimal module:
|
||||
|
||||
>>> from decimal import *
|
||||
>>> setcontext(ExtendedContext)
|
||||
>>> Decimal(0)
|
||||
Decimal("0")
|
||||
>>> Decimal("1")
|
||||
Decimal("1")
|
||||
>>> Decimal("-.0123")
|
||||
Decimal("-0.0123")
|
||||
Decimal('0')
|
||||
>>> Decimal('1')
|
||||
Decimal('1')
|
||||
>>> Decimal('-.0123')
|
||||
Decimal('-0.0123')
|
||||
>>> Decimal(123456)
|
||||
Decimal("123456")
|
||||
>>> Decimal("123.45e12345678901234567890")
|
||||
Decimal("1.2345E+12345678901234567892")
|
||||
>>> Decimal("1.33") + Decimal("1.27")
|
||||
Decimal("2.60")
|
||||
>>> Decimal("12.34") + Decimal("3.87") - Decimal("18.41")
|
||||
Decimal("-2.20")
|
||||
Decimal('123456')
|
||||
>>> Decimal('123.45e12345678901234567890')
|
||||
Decimal('1.2345E+12345678901234567892')
|
||||
>>> Decimal('1.33') + Decimal('1.27')
|
||||
Decimal('2.60')
|
||||
>>> Decimal('12.34') + Decimal('3.87') - Decimal('18.41')
|
||||
Decimal('-2.20')
|
||||
>>> dig = Decimal(1)
|
||||
>>> print dig / Decimal(3)
|
||||
0.333333333
|
||||
|
@ -91,7 +91,7 @@ DivisionByZero: x / 0
|
|||
>>> print c.flags[InvalidOperation]
|
||||
0
|
||||
>>> c.divide(Decimal(0), Decimal(0))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> c.traps[InvalidOperation] = 1
|
||||
>>> print c.flags[InvalidOperation]
|
||||
1
|
||||
|
@ -516,15 +516,15 @@ class Decimal(object):
|
|||
"""Create a decimal point instance.
|
||||
|
||||
>>> Decimal('3.14') # string input
|
||||
Decimal("3.14")
|
||||
Decimal('3.14')
|
||||
>>> Decimal((0, (3, 1, 4), -2)) # tuple (sign, digit_tuple, exponent)
|
||||
Decimal("3.14")
|
||||
Decimal('3.14')
|
||||
>>> Decimal(314) # int or long
|
||||
Decimal("314")
|
||||
Decimal('314')
|
||||
>>> Decimal(Decimal(314)) # another decimal instance
|
||||
Decimal("314")
|
||||
Decimal('314')
|
||||
>>> Decimal(' 3.14 \\n') # leading and trailing whitespace okay
|
||||
Decimal("3.14")
|
||||
Decimal('3.14')
|
||||
"""
|
||||
|
||||
# Note that the coefficient, self._int, is actually stored as
|
||||
|
@ -883,7 +883,7 @@ class Decimal(object):
|
|||
#
|
||||
# The hash of a nonspecial noninteger Decimal must depend only
|
||||
# on the value of that Decimal, and not on its representation.
|
||||
# For example: hash(Decimal("100E-1")) == hash(Decimal("10")).
|
||||
# For example: hash(Decimal('100E-1')) == hash(Decimal('10')).
|
||||
if self._is_special:
|
||||
if self._isnan():
|
||||
raise TypeError('Cannot hash a NaN value.')
|
||||
|
@ -917,7 +917,7 @@ class Decimal(object):
|
|||
def __repr__(self):
|
||||
"""Represents the number as an instance of Decimal."""
|
||||
# Invariant: eval(repr(d)) == d
|
||||
return 'Decimal("%s")' % str(self)
|
||||
return "Decimal('%s')" % str(self)
|
||||
|
||||
def __str__(self, eng=False, context=None):
|
||||
"""Return string representation of the number in scientific notation.
|
||||
|
@ -3647,13 +3647,13 @@ class Context(object):
|
|||
the plus operation on the operand.
|
||||
|
||||
>>> ExtendedContext.abs(Decimal('2.1'))
|
||||
Decimal("2.1")
|
||||
Decimal('2.1')
|
||||
>>> ExtendedContext.abs(Decimal('-100'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
>>> ExtendedContext.abs(Decimal('101.5'))
|
||||
Decimal("101.5")
|
||||
Decimal('101.5')
|
||||
>>> ExtendedContext.abs(Decimal('-101.5'))
|
||||
Decimal("101.5")
|
||||
Decimal('101.5')
|
||||
"""
|
||||
return a.__abs__(context=self)
|
||||
|
||||
|
@ -3661,9 +3661,9 @@ class Context(object):
|
|||
"""Return the sum of the two operands.
|
||||
|
||||
>>> ExtendedContext.add(Decimal('12'), Decimal('7.00'))
|
||||
Decimal("19.00")
|
||||
Decimal('19.00')
|
||||
>>> ExtendedContext.add(Decimal('1E+2'), Decimal('1.01E+4'))
|
||||
Decimal("1.02E+4")
|
||||
Decimal('1.02E+4')
|
||||
"""
|
||||
return a.__add__(b, context=self)
|
||||
|
||||
|
@ -3677,7 +3677,7 @@ class Context(object):
|
|||
received object already is in its canonical form.
|
||||
|
||||
>>> ExtendedContext.canonical(Decimal('2.50'))
|
||||
Decimal("2.50")
|
||||
Decimal('2.50')
|
||||
"""
|
||||
return a.canonical(context=self)
|
||||
|
||||
|
@ -3696,17 +3696,17 @@ class Context(object):
|
|||
zero or negative zero, or '1' if the result is greater than zero.
|
||||
|
||||
>>> ExtendedContext.compare(Decimal('2.1'), Decimal('3'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.1'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.compare(Decimal('2.1'), Decimal('2.10'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.compare(Decimal('3'), Decimal('2.1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.compare(Decimal('2.1'), Decimal('-3'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.compare(Decimal('-3'), Decimal('2.1'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
"""
|
||||
return a.compare(b, context=self)
|
||||
|
||||
|
@ -3718,21 +3718,21 @@ class Context(object):
|
|||
|
||||
>>> c = ExtendedContext
|
||||
>>> c.compare_signal(Decimal('2.1'), Decimal('3'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> c.compare_signal(Decimal('2.1'), Decimal('2.1'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> c.flags[InvalidOperation] = 0
|
||||
>>> print c.flags[InvalidOperation]
|
||||
0
|
||||
>>> c.compare_signal(Decimal('NaN'), Decimal('2.1'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> print c.flags[InvalidOperation]
|
||||
1
|
||||
>>> c.flags[InvalidOperation] = 0
|
||||
>>> print c.flags[InvalidOperation]
|
||||
0
|
||||
>>> c.compare_signal(Decimal('sNaN'), Decimal('2.1'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> print c.flags[InvalidOperation]
|
||||
1
|
||||
"""
|
||||
|
@ -3746,17 +3746,17 @@ class Context(object):
|
|||
representations.
|
||||
|
||||
>>> ExtendedContext.compare_total(Decimal('12.73'), Decimal('127.9'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.compare_total(Decimal('-127'), Decimal('12'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.3'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.compare_total(Decimal('12.30'), Decimal('12.30'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.compare_total(Decimal('12.3'), Decimal('12.300'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.compare_total(Decimal('12.3'), Decimal('NaN'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
"""
|
||||
return a.compare_total(b)
|
||||
|
||||
|
@ -3771,9 +3771,9 @@ class Context(object):
|
|||
"""Returns a copy of the operand with the sign set to 0.
|
||||
|
||||
>>> ExtendedContext.copy_abs(Decimal('2.1'))
|
||||
Decimal("2.1")
|
||||
Decimal('2.1')
|
||||
>>> ExtendedContext.copy_abs(Decimal('-100'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
"""
|
||||
return a.copy_abs()
|
||||
|
||||
|
@ -3781,9 +3781,9 @@ class Context(object):
|
|||
"""Returns a copy of the decimal objet.
|
||||
|
||||
>>> ExtendedContext.copy_decimal(Decimal('2.1'))
|
||||
Decimal("2.1")
|
||||
Decimal('2.1')
|
||||
>>> ExtendedContext.copy_decimal(Decimal('-1.00'))
|
||||
Decimal("-1.00")
|
||||
Decimal('-1.00')
|
||||
"""
|
||||
return Decimal(a)
|
||||
|
||||
|
@ -3791,9 +3791,9 @@ class Context(object):
|
|||
"""Returns a copy of the operand with the sign inverted.
|
||||
|
||||
>>> ExtendedContext.copy_negate(Decimal('101.5'))
|
||||
Decimal("-101.5")
|
||||
Decimal('-101.5')
|
||||
>>> ExtendedContext.copy_negate(Decimal('-101.5'))
|
||||
Decimal("101.5")
|
||||
Decimal('101.5')
|
||||
"""
|
||||
return a.copy_negate()
|
||||
|
||||
|
@ -3804,13 +3804,13 @@ class Context(object):
|
|||
equal to the sign of the second operand.
|
||||
|
||||
>>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('7.33'))
|
||||
Decimal("1.50")
|
||||
Decimal('1.50')
|
||||
>>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('7.33'))
|
||||
Decimal("1.50")
|
||||
Decimal('1.50')
|
||||
>>> ExtendedContext.copy_sign(Decimal( '1.50'), Decimal('-7.33'))
|
||||
Decimal("-1.50")
|
||||
Decimal('-1.50')
|
||||
>>> ExtendedContext.copy_sign(Decimal('-1.50'), Decimal('-7.33'))
|
||||
Decimal("-1.50")
|
||||
Decimal('-1.50')
|
||||
"""
|
||||
return a.copy_sign(b)
|
||||
|
||||
|
@ -3818,25 +3818,25 @@ class Context(object):
|
|||
"""Decimal division in a specified context.
|
||||
|
||||
>>> ExtendedContext.divide(Decimal('1'), Decimal('3'))
|
||||
Decimal("0.333333333")
|
||||
Decimal('0.333333333')
|
||||
>>> ExtendedContext.divide(Decimal('2'), Decimal('3'))
|
||||
Decimal("0.666666667")
|
||||
Decimal('0.666666667')
|
||||
>>> ExtendedContext.divide(Decimal('5'), Decimal('2'))
|
||||
Decimal("2.5")
|
||||
Decimal('2.5')
|
||||
>>> ExtendedContext.divide(Decimal('1'), Decimal('10'))
|
||||
Decimal("0.1")
|
||||
Decimal('0.1')
|
||||
>>> ExtendedContext.divide(Decimal('12'), Decimal('12'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.divide(Decimal('8.00'), Decimal('2'))
|
||||
Decimal("4.00")
|
||||
Decimal('4.00')
|
||||
>>> ExtendedContext.divide(Decimal('2.400'), Decimal('2.0'))
|
||||
Decimal("1.20")
|
||||
Decimal('1.20')
|
||||
>>> ExtendedContext.divide(Decimal('1000'), Decimal('100'))
|
||||
Decimal("10")
|
||||
Decimal('10')
|
||||
>>> ExtendedContext.divide(Decimal('1000'), Decimal('1'))
|
||||
Decimal("1000")
|
||||
Decimal('1000')
|
||||
>>> ExtendedContext.divide(Decimal('2.40E+6'), Decimal('2'))
|
||||
Decimal("1.20E+6")
|
||||
Decimal('1.20E+6')
|
||||
"""
|
||||
return a.__div__(b, context=self)
|
||||
|
||||
|
@ -3844,11 +3844,11 @@ class Context(object):
|
|||
"""Divides two numbers and returns the integer part of the result.
|
||||
|
||||
>>> ExtendedContext.divide_int(Decimal('2'), Decimal('3'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.divide_int(Decimal('10'), Decimal('3'))
|
||||
Decimal("3")
|
||||
Decimal('3')
|
||||
>>> ExtendedContext.divide_int(Decimal('1'), Decimal('0.3'))
|
||||
Decimal("3")
|
||||
Decimal('3')
|
||||
"""
|
||||
return a.__floordiv__(b, context=self)
|
||||
|
||||
|
@ -3862,17 +3862,17 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> c.exp(Decimal('-Infinity'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> c.exp(Decimal('-1'))
|
||||
Decimal("0.367879441")
|
||||
Decimal('0.367879441')
|
||||
>>> c.exp(Decimal('0'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> c.exp(Decimal('1'))
|
||||
Decimal("2.71828183")
|
||||
Decimal('2.71828183')
|
||||
>>> c.exp(Decimal('0.693147181'))
|
||||
Decimal("2.00000000")
|
||||
Decimal('2.00000000')
|
||||
>>> c.exp(Decimal('+Infinity'))
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
"""
|
||||
return a.exp(context=self)
|
||||
|
||||
|
@ -3884,11 +3884,11 @@ class Context(object):
|
|||
multiplication, using add, all with only one final rounding.
|
||||
|
||||
>>> ExtendedContext.fma(Decimal('3'), Decimal('5'), Decimal('7'))
|
||||
Decimal("22")
|
||||
Decimal('22')
|
||||
>>> ExtendedContext.fma(Decimal('3'), Decimal('-5'), Decimal('7'))
|
||||
Decimal("-8")
|
||||
Decimal('-8')
|
||||
>>> ExtendedContext.fma(Decimal('888565290'), Decimal('1557.96930'), Decimal('-86087.7578'))
|
||||
Decimal("1.38435736E+12")
|
||||
Decimal('1.38435736E+12')
|
||||
"""
|
||||
return a.fma(b, c, context=self)
|
||||
|
||||
|
@ -4042,15 +4042,15 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> c.ln(Decimal('0'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
>>> c.ln(Decimal('1.000'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> c.ln(Decimal('2.71828183'))
|
||||
Decimal("1.00000000")
|
||||
Decimal('1.00000000')
|
||||
>>> c.ln(Decimal('10'))
|
||||
Decimal("2.30258509")
|
||||
Decimal('2.30258509')
|
||||
>>> c.ln(Decimal('+Infinity'))
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
"""
|
||||
return a.ln(context=self)
|
||||
|
||||
|
@ -4061,19 +4061,19 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> c.log10(Decimal('0'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
>>> c.log10(Decimal('0.001'))
|
||||
Decimal("-3")
|
||||
Decimal('-3')
|
||||
>>> c.log10(Decimal('1.000'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> c.log10(Decimal('2'))
|
||||
Decimal("0.301029996")
|
||||
Decimal('0.301029996')
|
||||
>>> c.log10(Decimal('10'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> c.log10(Decimal('70'))
|
||||
Decimal("1.84509804")
|
||||
Decimal('1.84509804')
|
||||
>>> c.log10(Decimal('+Infinity'))
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
"""
|
||||
return a.log10(context=self)
|
||||
|
||||
|
@ -4086,13 +4086,13 @@ class Context(object):
|
|||
value of that digit and without limiting the resulting exponent).
|
||||
|
||||
>>> ExtendedContext.logb(Decimal('250'))
|
||||
Decimal("2")
|
||||
Decimal('2')
|
||||
>>> ExtendedContext.logb(Decimal('2.50'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logb(Decimal('0.03'))
|
||||
Decimal("-2")
|
||||
Decimal('-2')
|
||||
>>> ExtendedContext.logb(Decimal('0'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
"""
|
||||
return a.logb(context=self)
|
||||
|
||||
|
@ -4102,17 +4102,17 @@ class Context(object):
|
|||
The operands must be both logical numbers.
|
||||
|
||||
>>> ExtendedContext.logical_and(Decimal('0'), Decimal('0'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_and(Decimal('0'), Decimal('1'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_and(Decimal('1'), Decimal('0'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_and(Decimal('1'), Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_and(Decimal('1100'), Decimal('1010'))
|
||||
Decimal("1000")
|
||||
Decimal('1000')
|
||||
>>> ExtendedContext.logical_and(Decimal('1111'), Decimal('10'))
|
||||
Decimal("10")
|
||||
Decimal('10')
|
||||
"""
|
||||
return a.logical_and(b, context=self)
|
||||
|
||||
|
@ -4122,13 +4122,13 @@ class Context(object):
|
|||
The operand must be a logical number.
|
||||
|
||||
>>> ExtendedContext.logical_invert(Decimal('0'))
|
||||
Decimal("111111111")
|
||||
Decimal('111111111')
|
||||
>>> ExtendedContext.logical_invert(Decimal('1'))
|
||||
Decimal("111111110")
|
||||
Decimal('111111110')
|
||||
>>> ExtendedContext.logical_invert(Decimal('111111111'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_invert(Decimal('101010101'))
|
||||
Decimal("10101010")
|
||||
Decimal('10101010')
|
||||
"""
|
||||
return a.logical_invert(context=self)
|
||||
|
||||
|
@ -4138,17 +4138,17 @@ class Context(object):
|
|||
The operands must be both logical numbers.
|
||||
|
||||
>>> ExtendedContext.logical_or(Decimal('0'), Decimal('0'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_or(Decimal('0'), Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_or(Decimal('1'), Decimal('0'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_or(Decimal('1'), Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_or(Decimal('1100'), Decimal('1010'))
|
||||
Decimal("1110")
|
||||
Decimal('1110')
|
||||
>>> ExtendedContext.logical_or(Decimal('1110'), Decimal('10'))
|
||||
Decimal("1110")
|
||||
Decimal('1110')
|
||||
"""
|
||||
return a.logical_or(b, context=self)
|
||||
|
||||
|
@ -4158,17 +4158,17 @@ class Context(object):
|
|||
The operands must be both logical numbers.
|
||||
|
||||
>>> ExtendedContext.logical_xor(Decimal('0'), Decimal('0'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_xor(Decimal('0'), Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_xor(Decimal('1'), Decimal('0'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.logical_xor(Decimal('1'), Decimal('1'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.logical_xor(Decimal('1100'), Decimal('1010'))
|
||||
Decimal("110")
|
||||
Decimal('110')
|
||||
>>> ExtendedContext.logical_xor(Decimal('1111'), Decimal('10'))
|
||||
Decimal("1101")
|
||||
Decimal('1101')
|
||||
"""
|
||||
return a.logical_xor(b, context=self)
|
||||
|
||||
|
@ -4182,13 +4182,13 @@ class Context(object):
|
|||
infinity) of the two operands is chosen as the result.
|
||||
|
||||
>>> ExtendedContext.max(Decimal('3'), Decimal('2'))
|
||||
Decimal("3")
|
||||
Decimal('3')
|
||||
>>> ExtendedContext.max(Decimal('-10'), Decimal('3'))
|
||||
Decimal("3")
|
||||
Decimal('3')
|
||||
>>> ExtendedContext.max(Decimal('1.0'), Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.max(Decimal('7'), Decimal('NaN'))
|
||||
Decimal("7")
|
||||
Decimal('7')
|
||||
"""
|
||||
return a.max(b, context=self)
|
||||
|
||||
|
@ -4206,13 +4206,13 @@ class Context(object):
|
|||
infinity) of the two operands is chosen as the result.
|
||||
|
||||
>>> ExtendedContext.min(Decimal('3'), Decimal('2'))
|
||||
Decimal("2")
|
||||
Decimal('2')
|
||||
>>> ExtendedContext.min(Decimal('-10'), Decimal('3'))
|
||||
Decimal("-10")
|
||||
Decimal('-10')
|
||||
>>> ExtendedContext.min(Decimal('1.0'), Decimal('1'))
|
||||
Decimal("1.0")
|
||||
Decimal('1.0')
|
||||
>>> ExtendedContext.min(Decimal('7'), Decimal('NaN'))
|
||||
Decimal("7")
|
||||
Decimal('7')
|
||||
"""
|
||||
return a.min(b, context=self)
|
||||
|
||||
|
@ -4228,9 +4228,9 @@ class Context(object):
|
|||
has the same exponent as the operand.
|
||||
|
||||
>>> ExtendedContext.minus(Decimal('1.3'))
|
||||
Decimal("-1.3")
|
||||
Decimal('-1.3')
|
||||
>>> ExtendedContext.minus(Decimal('-1.3'))
|
||||
Decimal("1.3")
|
||||
Decimal('1.3')
|
||||
"""
|
||||
return a.__neg__(context=self)
|
||||
|
||||
|
@ -4243,15 +4243,15 @@ class Context(object):
|
|||
of the two operands.
|
||||
|
||||
>>> ExtendedContext.multiply(Decimal('1.20'), Decimal('3'))
|
||||
Decimal("3.60")
|
||||
Decimal('3.60')
|
||||
>>> ExtendedContext.multiply(Decimal('7'), Decimal('3'))
|
||||
Decimal("21")
|
||||
Decimal('21')
|
||||
>>> ExtendedContext.multiply(Decimal('0.9'), Decimal('0.8'))
|
||||
Decimal("0.72")
|
||||
Decimal('0.72')
|
||||
>>> ExtendedContext.multiply(Decimal('0.9'), Decimal('-0'))
|
||||
Decimal("-0.0")
|
||||
Decimal('-0.0')
|
||||
>>> ExtendedContext.multiply(Decimal('654321'), Decimal('654321'))
|
||||
Decimal("4.28135971E+11")
|
||||
Decimal('4.28135971E+11')
|
||||
"""
|
||||
return a.__mul__(b, context=self)
|
||||
|
||||
|
@ -4262,13 +4262,13 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> ExtendedContext.next_minus(Decimal('1'))
|
||||
Decimal("0.999999999")
|
||||
Decimal('0.999999999')
|
||||
>>> c.next_minus(Decimal('1E-1007'))
|
||||
Decimal("0E-1007")
|
||||
Decimal('0E-1007')
|
||||
>>> ExtendedContext.next_minus(Decimal('-1.00000003'))
|
||||
Decimal("-1.00000004")
|
||||
Decimal('-1.00000004')
|
||||
>>> c.next_minus(Decimal('Infinity'))
|
||||
Decimal("9.99999999E+999")
|
||||
Decimal('9.99999999E+999')
|
||||
"""
|
||||
return a.next_minus(context=self)
|
||||
|
||||
|
@ -4279,13 +4279,13 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> ExtendedContext.next_plus(Decimal('1'))
|
||||
Decimal("1.00000001")
|
||||
Decimal('1.00000001')
|
||||
>>> c.next_plus(Decimal('-1E-1007'))
|
||||
Decimal("-0E-1007")
|
||||
Decimal('-0E-1007')
|
||||
>>> ExtendedContext.next_plus(Decimal('-1.00000003'))
|
||||
Decimal("-1.00000002")
|
||||
Decimal('-1.00000002')
|
||||
>>> c.next_plus(Decimal('-Infinity'))
|
||||
Decimal("-9.99999999E+999")
|
||||
Decimal('-9.99999999E+999')
|
||||
"""
|
||||
return a.next_plus(context=self)
|
||||
|
||||
|
@ -4301,19 +4301,19 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> c.next_toward(Decimal('1'), Decimal('2'))
|
||||
Decimal("1.00000001")
|
||||
Decimal('1.00000001')
|
||||
>>> c.next_toward(Decimal('-1E-1007'), Decimal('1'))
|
||||
Decimal("-0E-1007")
|
||||
Decimal('-0E-1007')
|
||||
>>> c.next_toward(Decimal('-1.00000003'), Decimal('0'))
|
||||
Decimal("-1.00000002")
|
||||
Decimal('-1.00000002')
|
||||
>>> c.next_toward(Decimal('1'), Decimal('0'))
|
||||
Decimal("0.999999999")
|
||||
Decimal('0.999999999')
|
||||
>>> c.next_toward(Decimal('1E-1007'), Decimal('-100'))
|
||||
Decimal("0E-1007")
|
||||
Decimal('0E-1007')
|
||||
>>> c.next_toward(Decimal('-1.00000003'), Decimal('-10'))
|
||||
Decimal("-1.00000004")
|
||||
Decimal('-1.00000004')
|
||||
>>> c.next_toward(Decimal('0.00'), Decimal('-0.0000'))
|
||||
Decimal("-0.00")
|
||||
Decimal('-0.00')
|
||||
"""
|
||||
return a.next_toward(b, context=self)
|
||||
|
||||
|
@ -4324,17 +4324,17 @@ class Context(object):
|
|||
result.
|
||||
|
||||
>>> ExtendedContext.normalize(Decimal('2.1'))
|
||||
Decimal("2.1")
|
||||
Decimal('2.1')
|
||||
>>> ExtendedContext.normalize(Decimal('-2.0'))
|
||||
Decimal("-2")
|
||||
Decimal('-2')
|
||||
>>> ExtendedContext.normalize(Decimal('1.200'))
|
||||
Decimal("1.2")
|
||||
Decimal('1.2')
|
||||
>>> ExtendedContext.normalize(Decimal('-120'))
|
||||
Decimal("-1.2E+2")
|
||||
Decimal('-1.2E+2')
|
||||
>>> ExtendedContext.normalize(Decimal('120.00'))
|
||||
Decimal("1.2E+2")
|
||||
Decimal('1.2E+2')
|
||||
>>> ExtendedContext.normalize(Decimal('0.00'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
"""
|
||||
return a.normalize(context=self)
|
||||
|
||||
|
@ -4393,9 +4393,9 @@ class Context(object):
|
|||
has the same exponent as the operand.
|
||||
|
||||
>>> ExtendedContext.plus(Decimal('1.3'))
|
||||
Decimal("1.3")
|
||||
Decimal('1.3')
|
||||
>>> ExtendedContext.plus(Decimal('-1.3'))
|
||||
Decimal("-1.3")
|
||||
Decimal('-1.3')
|
||||
"""
|
||||
return a.__pos__(context=self)
|
||||
|
||||
|
@ -4425,46 +4425,46 @@ class Context(object):
|
|||
>>> c.Emin = -999
|
||||
>>> c.Emax = 999
|
||||
>>> c.power(Decimal('2'), Decimal('3'))
|
||||
Decimal("8")
|
||||
Decimal('8')
|
||||
>>> c.power(Decimal('-2'), Decimal('3'))
|
||||
Decimal("-8")
|
||||
Decimal('-8')
|
||||
>>> c.power(Decimal('2'), Decimal('-3'))
|
||||
Decimal("0.125")
|
||||
Decimal('0.125')
|
||||
>>> c.power(Decimal('1.7'), Decimal('8'))
|
||||
Decimal("69.7575744")
|
||||
Decimal('69.7575744')
|
||||
>>> c.power(Decimal('10'), Decimal('0.301029996'))
|
||||
Decimal("2.00000000")
|
||||
Decimal('2.00000000')
|
||||
>>> c.power(Decimal('Infinity'), Decimal('-1'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> c.power(Decimal('Infinity'), Decimal('0'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> c.power(Decimal('Infinity'), Decimal('1'))
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
>>> c.power(Decimal('-Infinity'), Decimal('-1'))
|
||||
Decimal("-0")
|
||||
Decimal('-0')
|
||||
>>> c.power(Decimal('-Infinity'), Decimal('0'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> c.power(Decimal('-Infinity'), Decimal('1'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
>>> c.power(Decimal('-Infinity'), Decimal('2'))
|
||||
Decimal("Infinity")
|
||||
Decimal('Infinity')
|
||||
>>> c.power(Decimal('0'), Decimal('0'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
|
||||
>>> c.power(Decimal('3'), Decimal('7'), Decimal('16'))
|
||||
Decimal("11")
|
||||
Decimal('11')
|
||||
>>> c.power(Decimal('-3'), Decimal('7'), Decimal('16'))
|
||||
Decimal("-11")
|
||||
Decimal('-11')
|
||||
>>> c.power(Decimal('-3'), Decimal('8'), Decimal('16'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> c.power(Decimal('3'), Decimal('7'), Decimal('-16'))
|
||||
Decimal("11")
|
||||
Decimal('11')
|
||||
>>> c.power(Decimal('23E12345'), Decimal('67E189'), Decimal('123456789'))
|
||||
Decimal("11729830")
|
||||
Decimal('11729830')
|
||||
>>> c.power(Decimal('-0'), Decimal('17'), Decimal('1729'))
|
||||
Decimal("-0")
|
||||
Decimal('-0')
|
||||
>>> c.power(Decimal('-23'), Decimal('0'), Decimal('65537'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
"""
|
||||
return a.__pow__(b, modulo, context=self)
|
||||
|
||||
|
@ -4487,35 +4487,35 @@ class Context(object):
|
|||
if the result is subnormal and inexact.
|
||||
|
||||
>>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.001'))
|
||||
Decimal("2.170")
|
||||
Decimal('2.170')
|
||||
>>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.01'))
|
||||
Decimal("2.17")
|
||||
Decimal('2.17')
|
||||
>>> ExtendedContext.quantize(Decimal('2.17'), Decimal('0.1'))
|
||||
Decimal("2.2")
|
||||
Decimal('2.2')
|
||||
>>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+0'))
|
||||
Decimal("2")
|
||||
Decimal('2')
|
||||
>>> ExtendedContext.quantize(Decimal('2.17'), Decimal('1e+1'))
|
||||
Decimal("0E+1")
|
||||
Decimal('0E+1')
|
||||
>>> ExtendedContext.quantize(Decimal('-Inf'), Decimal('Infinity'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
>>> ExtendedContext.quantize(Decimal('2'), Decimal('Infinity'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> ExtendedContext.quantize(Decimal('-0.1'), Decimal('1'))
|
||||
Decimal("-0")
|
||||
Decimal('-0')
|
||||
>>> ExtendedContext.quantize(Decimal('-0'), Decimal('1e+5'))
|
||||
Decimal("-0E+5")
|
||||
Decimal('-0E+5')
|
||||
>>> ExtendedContext.quantize(Decimal('+35236450.6'), Decimal('1e-2'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> ExtendedContext.quantize(Decimal('-35236450.6'), Decimal('1e-2'))
|
||||
Decimal("NaN")
|
||||
Decimal('NaN')
|
||||
>>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-1'))
|
||||
Decimal("217.0")
|
||||
Decimal('217.0')
|
||||
>>> ExtendedContext.quantize(Decimal('217'), Decimal('1e-0'))
|
||||
Decimal("217")
|
||||
Decimal('217')
|
||||
>>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+1'))
|
||||
Decimal("2.2E+2")
|
||||
Decimal('2.2E+2')
|
||||
>>> ExtendedContext.quantize(Decimal('217'), Decimal('1e+2'))
|
||||
Decimal("2E+2")
|
||||
Decimal('2E+2')
|
||||
"""
|
||||
return a.quantize(b, context=self)
|
||||
|
||||
|
@ -4523,7 +4523,7 @@ class Context(object):
|
|||
"""Just returns 10, as this is Decimal, :)
|
||||
|
||||
>>> ExtendedContext.radix()
|
||||
Decimal("10")
|
||||
Decimal('10')
|
||||
"""
|
||||
return Decimal(10)
|
||||
|
||||
|
@ -4540,17 +4540,17 @@ class Context(object):
|
|||
remainder cannot be calculated).
|
||||
|
||||
>>> ExtendedContext.remainder(Decimal('2.1'), Decimal('3'))
|
||||
Decimal("2.1")
|
||||
Decimal('2.1')
|
||||
>>> ExtendedContext.remainder(Decimal('10'), Decimal('3'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.remainder(Decimal('-10'), Decimal('3'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.remainder(Decimal('10.2'), Decimal('1'))
|
||||
Decimal("0.2")
|
||||
Decimal('0.2')
|
||||
>>> ExtendedContext.remainder(Decimal('10'), Decimal('0.3'))
|
||||
Decimal("0.1")
|
||||
Decimal('0.1')
|
||||
>>> ExtendedContext.remainder(Decimal('3.6'), Decimal('1.3'))
|
||||
Decimal("1.0")
|
||||
Decimal('1.0')
|
||||
"""
|
||||
return a.__mod__(b, context=self)
|
||||
|
||||
|
@ -4565,19 +4565,19 @@ class Context(object):
|
|||
remainder cannot be calculated).
|
||||
|
||||
>>> ExtendedContext.remainder_near(Decimal('2.1'), Decimal('3'))
|
||||
Decimal("-0.9")
|
||||
Decimal('-0.9')
|
||||
>>> ExtendedContext.remainder_near(Decimal('10'), Decimal('6'))
|
||||
Decimal("-2")
|
||||
Decimal('-2')
|
||||
>>> ExtendedContext.remainder_near(Decimal('10'), Decimal('3'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.remainder_near(Decimal('-10'), Decimal('3'))
|
||||
Decimal("-1")
|
||||
Decimal('-1')
|
||||
>>> ExtendedContext.remainder_near(Decimal('10.2'), Decimal('1'))
|
||||
Decimal("0.2")
|
||||
Decimal('0.2')
|
||||
>>> ExtendedContext.remainder_near(Decimal('10'), Decimal('0.3'))
|
||||
Decimal("0.1")
|
||||
Decimal('0.1')
|
||||
>>> ExtendedContext.remainder_near(Decimal('3.6'), Decimal('1.3'))
|
||||
Decimal("-0.3")
|
||||
Decimal('-0.3')
|
||||
"""
|
||||
return a.remainder_near(b, context=self)
|
||||
|
||||
|
@ -4591,15 +4591,15 @@ class Context(object):
|
|||
positive or to the right otherwise.
|
||||
|
||||
>>> ExtendedContext.rotate(Decimal('34'), Decimal('8'))
|
||||
Decimal("400000003")
|
||||
Decimal('400000003')
|
||||
>>> ExtendedContext.rotate(Decimal('12'), Decimal('9'))
|
||||
Decimal("12")
|
||||
Decimal('12')
|
||||
>>> ExtendedContext.rotate(Decimal('123456789'), Decimal('-2'))
|
||||
Decimal("891234567")
|
||||
Decimal('891234567')
|
||||
>>> ExtendedContext.rotate(Decimal('123456789'), Decimal('0'))
|
||||
Decimal("123456789")
|
||||
Decimal('123456789')
|
||||
>>> ExtendedContext.rotate(Decimal('123456789'), Decimal('+2'))
|
||||
Decimal("345678912")
|
||||
Decimal('345678912')
|
||||
"""
|
||||
return a.rotate(b, context=self)
|
||||
|
||||
|
@ -4624,11 +4624,11 @@ class Context(object):
|
|||
"""Returns the first operand after adding the second value its exp.
|
||||
|
||||
>>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('-2'))
|
||||
Decimal("0.0750")
|
||||
Decimal('0.0750')
|
||||
>>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('0'))
|
||||
Decimal("7.50")
|
||||
Decimal('7.50')
|
||||
>>> ExtendedContext.scaleb(Decimal('7.50'), Decimal('3'))
|
||||
Decimal("7.50E+3")
|
||||
Decimal('7.50E+3')
|
||||
"""
|
||||
return a.scaleb (b, context=self)
|
||||
|
||||
|
@ -4643,15 +4643,15 @@ class Context(object):
|
|||
coefficient are zeros.
|
||||
|
||||
>>> ExtendedContext.shift(Decimal('34'), Decimal('8'))
|
||||
Decimal("400000000")
|
||||
Decimal('400000000')
|
||||
>>> ExtendedContext.shift(Decimal('12'), Decimal('9'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.shift(Decimal('123456789'), Decimal('-2'))
|
||||
Decimal("1234567")
|
||||
Decimal('1234567')
|
||||
>>> ExtendedContext.shift(Decimal('123456789'), Decimal('0'))
|
||||
Decimal("123456789")
|
||||
Decimal('123456789')
|
||||
>>> ExtendedContext.shift(Decimal('123456789'), Decimal('+2'))
|
||||
Decimal("345678900")
|
||||
Decimal('345678900')
|
||||
"""
|
||||
return a.shift(b, context=self)
|
||||
|
||||
|
@ -4662,23 +4662,23 @@ class Context(object):
|
|||
algorithm.
|
||||
|
||||
>>> ExtendedContext.sqrt(Decimal('0'))
|
||||
Decimal("0")
|
||||
Decimal('0')
|
||||
>>> ExtendedContext.sqrt(Decimal('-0'))
|
||||
Decimal("-0")
|
||||
Decimal('-0')
|
||||
>>> ExtendedContext.sqrt(Decimal('0.39'))
|
||||
Decimal("0.624499800")
|
||||
Decimal('0.624499800')
|
||||
>>> ExtendedContext.sqrt(Decimal('100'))
|
||||
Decimal("10")
|
||||
Decimal('10')
|
||||
>>> ExtendedContext.sqrt(Decimal('1'))
|
||||
Decimal("1")
|
||||
Decimal('1')
|
||||
>>> ExtendedContext.sqrt(Decimal('1.0'))
|
||||
Decimal("1.0")
|
||||
Decimal('1.0')
|
||||
>>> ExtendedContext.sqrt(Decimal('1.00'))
|
||||
Decimal("1.0")
|
||||
Decimal('1.0')
|
||||
>>> ExtendedContext.sqrt(Decimal('7'))
|
||||
Decimal("2.64575131")
|
||||
Decimal('2.64575131')
|
||||
>>> ExtendedContext.sqrt(Decimal('10'))
|
||||
Decimal("3.16227766")
|
||||
Decimal('3.16227766')
|
||||
>>> ExtendedContext.prec
|
||||
9
|
||||
"""
|
||||
|
@ -4688,11 +4688,11 @@ class Context(object):
|
|||
"""Return the difference between the two operands.
|
||||
|
||||
>>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.07'))
|
||||
Decimal("0.23")
|
||||
Decimal('0.23')
|
||||
>>> ExtendedContext.subtract(Decimal('1.3'), Decimal('1.30'))
|
||||
Decimal("0.00")
|
||||
Decimal('0.00')
|
||||
>>> ExtendedContext.subtract(Decimal('1.3'), Decimal('2.07'))
|
||||
Decimal("-0.77")
|
||||
Decimal('-0.77')
|
||||
"""
|
||||
return a.__sub__(b, context=self)
|
||||
|
||||
|
@ -4721,21 +4721,21 @@ class Context(object):
|
|||
context.
|
||||
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('2.1'))
|
||||
Decimal("2")
|
||||
Decimal('2')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('100'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('100.0'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('101.5'))
|
||||
Decimal("102")
|
||||
Decimal('102')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('-101.5'))
|
||||
Decimal("-102")
|
||||
Decimal('-102')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('10E+5'))
|
||||
Decimal("1.0E+6")
|
||||
Decimal('1.0E+6')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('7.89E+77'))
|
||||
Decimal("7.89E+77")
|
||||
Decimal('7.89E+77')
|
||||
>>> ExtendedContext.to_integral_exact(Decimal('-Inf'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
"""
|
||||
return a.to_integral_exact(context=self)
|
||||
|
||||
|
@ -4749,21 +4749,21 @@ class Context(object):
|
|||
be set. The rounding mode is taken from the context.
|
||||
|
||||
>>> ExtendedContext.to_integral_value(Decimal('2.1'))
|
||||
Decimal("2")
|
||||
Decimal('2')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('100'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('100.0'))
|
||||
Decimal("100")
|
||||
Decimal('100')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('101.5'))
|
||||
Decimal("102")
|
||||
Decimal('102')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('-101.5'))
|
||||
Decimal("-102")
|
||||
Decimal('-102')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('10E+5'))
|
||||
Decimal("1.0E+6")
|
||||
Decimal('1.0E+6')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('7.89E+77'))
|
||||
Decimal("7.89E+77")
|
||||
Decimal('7.89E+77')
|
||||
>>> ExtendedContext.to_integral_value(Decimal('-Inf'))
|
||||
Decimal("-Infinity")
|
||||
Decimal('-Infinity')
|
||||
"""
|
||||
return a.to_integral_value(context=self)
|
||||
|
||||
|
|
|
@ -1049,7 +1049,7 @@ class DecimalUsabilityTest(unittest.TestCase):
|
|||
|
||||
d = Decimal('15.32')
|
||||
self.assertEqual(str(d), '15.32') # str
|
||||
self.assertEqual(repr(d), 'Decimal("15.32")') # repr
|
||||
self.assertEqual(repr(d), "Decimal('15.32')") # repr
|
||||
|
||||
def test_tonum_methods(self):
|
||||
#Test float, int and long methods.
|
||||
|
|
Loading…
Reference in New Issue