Commits

Anonymous committed 8da57c2

Make sure the money formatting recipe can doesn't run out of digits
to the right of the decimal point.

Comments (0)

Files changed (1)

Doc/lib/libdecimal.tex

 
     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='$')
     '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: