[Python-checkins] python/dist/src/Doc/lib libdecimal.tex,1.22,1.23

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Thu Nov 25 05:47:14 CET 2004


Update of /cvsroot/python/python/dist/src/Doc/lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23982

Modified Files:
	libdecimal.tex 
Log Message:
Make sure the money formatting recipe can doesn't run out of digits
to the right of the decimal point.



Index: libdecimal.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/lib/libdecimal.tex,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- libdecimal.tex	24 Nov 2004 05:53:26 -0000	1.22
+++ libdecimal.tex	25 Nov 2004 04:47:09 -0000	1.23
@@ -979,12 +979,12 @@
 
     places:  required number of places after the decimal point
     curr:    optional currency symbol before the sign (may be blank)
-    sep:     optional grouping separator (comma, period, or blank)
+    sep:     optional grouping separator (comma, period, space, or blank)
     dp:      decimal point indicator (comma or period)
              only specify as blank when places is zero
-    pos:     optional sign for positive numbers: "+", space or blank
-    neg:     optional sign for negative numbers: "-", "(", space or blank
-    trailneg:optional trailing minus indicator:  "-", ")", space or blank
+    pos:     optional sign for positive numbers: '+', space or blank
+    neg:     optional sign for negative numbers: '-', '(', space or blank
+    trailneg:optional trailing minus indicator:  '-', ')', space or blank
 
     >>> d = Decimal('-1234567.8901')
     >>> moneyfmt(d, curr='$')
@@ -993,19 +993,25 @@
     '1.234.568-'
     >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
     '($1,234,567.89)'
-    >>> moneyfmt(Decimal(123456))
-    '123,456.00'
-    
+    >>> moneyfmt(Decimal(123456789), sep=' ')
+    '123 456 789.00'
+    >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
+    '<.02>'
+
     """
     q = Decimal((0, (1,), -places))    # 2 places --> '0.01'
     sign, digits, exp = value.quantize(q).as_tuple()
+    assert exp == -places    
     result = []
     digits = map(str, digits)
     build, next = result.append, digits.pop
     if sign:
         build(trailneg)
     for i in range(places):
-        build(next())
+        if digits:
+            build(next())
+        else:
+            build('0')
     build(dp)
     i = 0
     while digits:



More information about the Python-checkins mailing list