[Python-checkins] python/nondist/sandbox/decimal Decimal.py, 1.28,
1.29
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Wed Jun 30 01:38:27 EDT 2004
Update of /cvsroot/python/python/nondist/sandbox/decimal
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7869
Modified Files:
Decimal.py
Log Message:
Part I: Add docstrings and doctests adapted from the spec.
Index: Decimal.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/decimal/Decimal.py,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** Decimal.py 30 Jun 2004 04:22:54 -0000 1.28
--- Decimal.py 30 Jun 2004 05:38:25 -0000 1.29
***************
*** 1,3 ****
! # Copyright (c) 2004 Python Software Foundation.
# All rights reserved.
--- 1,3 ----
! # Copyright (c) 2004 Python Software Foundation.
# All rights reserved.
***************
*** 2216,2236 ****
--- 2216,2364 ----
return a.compare(b, context=self)
def divide(self, a, b):
+ """Decimal division in a specified context.
+
+ >>> Context(prec=9).divide(Decimal('1'), Decimal('3'))
+ Decimal("0.333333333")
+ >>> Context(prec=9).divide(Decimal('2'), Decimal('3'))
+ Decimal("0.666666667")
+ >>> Context(prec=9).divide(Decimal('5'), Decimal('2'))
+ Decimal("2.5")
+ >>> Context(prec=9).divide(Decimal('1'), Decimal('10'))
+ Decimal("0.1")
+ >>> Context(prec=9).divide(Decimal('12'), Decimal('12'))
+ Decimal("1")
+ >>> Context(prec=9).divide(Decimal('8.00'), Decimal('2'))
+ Decimal("4.00")
+ >>> Context(prec=9).divide(Decimal('2.400'), Decimal('2.0'))
+ Decimal("1.20")
+ >>> Context(prec=9).divide(Decimal('1000'), Decimal('100'))
+ Decimal("10")
+ >>> Context(prec=9).divide(Decimal('1000'), Decimal('1'))
+ Decimal("1000")
+ >>> Context(prec=9).divide(Decimal('2.40E+6'), Decimal('2'))
+ Decimal("1.20E+6")
+ """
return a.__div__(b, context=self)
+
def divide_int(self, a, b):
+ """Divides two numbers and returns the integer part of the result.
+
+ >>> Context(prec=9).divide_int(Decimal('2'), Decimal('3'))
+ Decimal("0")
+ >>> Context(prec=9).divide_int(Decimal('10'), Decimal('3'))
+ Decimal("3")
+ >>> Context(prec=9).divide_int(Decimal('1'), Decimal('0.3'))
+ Decimal("3")
+ """
return a.__floordiv__(b, context=self)
+
def divmod(self, a, b):
return a.__divmod__(b, context=self)
def max(self, a,b):
+ """max compares two values numerically and returns the maximum.
+
+ If either operand is a NaN then the general rules apply.
+ Otherwise, the operands are compared as as though by the compare
+ operation. If they are numerically equal then the left-hand operand
+ is chosen as the result. Otherwise the maximum (closer to positive
+ infinity) of the two operands is chosen as the result.
+
+ >>> Context(prec=9).max(Decimal('3'), Decimal('2'))
+ Decimal("3")
+ >>> Context(prec=9).max(Decimal('-10'), Decimal('3'))
+ Decimal("3")
+ >>> Context(prec=9).max(Decimal('1.0'), Decimal('1'))
+ Decimal("1.0")
+ """
return a.max(b, context=self)
+
def min(self, a,b):
+ """min compares two values numerically and returns the minimum.
+
+ If either operand is a NaN then the general rules apply.
+ Otherwise, the operands are compared as as though by the compare
+ operation. If they are numerically equal then the left-hand operand
+ is chosen as the result. Otherwise the minimum (closer to negative
+ infinity) of the two operands is chosen as the result.
+
+ >>> Context(prec=9).min(Decimal('3'), Decimal('2'))
+ Decimal("2")
+ >>> Context(prec=9).min(Decimal('-10'), Decimal('3'))
+ Decimal("-10")
+ >>> Context(prec=9).min(Decimal('1.0'), Decimal('1'))
+ Decimal("1.0")
+ """
return a.min(b, context=self)
+
def minus(self, a):
+ """Minus corresponds to unary prefix minus in Python.
+
+ The operation is evaluated using the same rules as subtract; the
+ operation minus(a) is calculated as subtract(â0â, a) where the â0â
+ has the same exponent as the operand.
+
+ >>> Context(prec=9).minus(Decimal('1.3'))
+ Decimal("-1.3")
+ >>> Context(prec=9).minus(Decimal('-1.3'))
+ Decimal("1.3")
+ """
return a.__neg__(context=self)
+
def multiply(self, a, b):
+ """multiply multiplies two operands.
+
+ If either operand is a special value then the general rules apply.
+ Otherwise, the operands are multiplied together (âlong multiplicationâ),
+ resulting in a number which may be as long as the sum of the lengths
+ of the two operands.
+
+ >>> Context(prec=9).multiply(Decimal('1.20'), Decimal('3'))
+ Decimal("3.60")
+ >>> Context(prec=9).multiply(Decimal('7'), Decimal('3'))
+ Decimal("21")
+ >>> Context(prec=9).multiply(Decimal('0.9'), Decimal('0.8'))
+ Decimal("0.72")
+ >>> Context(prec=9).multiply(Decimal('0.9'), Decimal('-0'))
+ Decimal("-0.0")
+ >>> Context(prec=9).multiply(Decimal('654321'), Decimal('654321'))
+ Decimal("4.28135971E+11")
+ """
return a.__mul__(b, context=self)
+
def normalize(self, a):
+ """normalize reduces its operand to its simplest form.
+
+ Essentially a plus operation with all trailing zeros removed from the
+ result.
+
+ >>> Context(prec=9).normalize(Decimal('2.1'))
+ Decimal("2.1")
+ >>> Context(prec=9).normalize(Decimal('-2.0'))
+ Decimal("-2")
+ >>> Context(prec=9).normalize(Decimal('1.200'))
+ Decimal("1.2")
+ >>> Context(prec=9).normalize(Decimal('-120'))
+ Decimal("-1.2E+2")
+ >>> Context(prec=9).normalize(Decimal('120.00'))
+ Decimal("1.2E+2")
+ >>> Context(prec=9).normalize(Decimal('0.00'))
+ Decimal("0")
+ """
return a.normalize(context=self)
+
def plus(self, a):
+ """Plus corresponds to unary prefix plus in Python.
+
+ The operation is evaluated using the same rules as add; the
+ operation plus(a) is calculated as add(â0â, a) where the â0â
+ has the same exponent as the operand.
+
+ >>> Context(prec=9).plus(Decimal('1.3'))
+ Decimal("1.3")
+ >>> Context(prec=9).plus(Decimal('-1.3'))
+ Decimal("-1.3")
+ """
return a.__pos__(context=self)
+
def power(self, a, b, modulo=None):
return a.__pow__(b, modulo, context=self)
More information about the Python-checkins
mailing list