summaryrefslogtreecommitdiffstats
path: root/Doc/lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2004-11-25 04:47:09 (GMT)
committerRaymond Hettinger <python@rcn.com>2004-11-25 04:47:09 (GMT)
commit3de9aa40ec5fa83148616bf88dc0c09a71b9c90f (patch)
tree0c018ff3b8781ed8d484b2c6c2b16d6e667b0a10 /Doc/lib
parent7a8173a477d69269d8f4b1f80253310b07a088d2 (diff)
downloadcpython-3de9aa40ec5fa83148616bf88dc0c09a71b9c90f.zip
cpython-3de9aa40ec5fa83148616bf88dc0c09a71b9c90f.tar.gz
cpython-3de9aa40ec5fa83148616bf88dc0c09a71b9c90f.tar.bz2
Make sure the money formatting recipe can doesn't run out of digits
to the right of the decimal point.
Diffstat (limited to 'Doc/lib')
-rw-r--r--Doc/lib/libdecimal.tex22
1 files changed, 14 insertions, 8 deletions
diff --git a/Doc/lib/libdecimal.tex b/Doc/lib/libdecimal.tex
index 7d461c2..7c88bc4 100644
--- a/Doc/lib/libdecimal.tex
+++ b/Doc/lib/libdecimal.tex
@@ -979,12 +979,12 @@ def moneyfmt(value, places=2, curr='', sep=',', dp='.',
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 @@ def moneyfmt(value, places=2, curr='', sep=',', dp='.',
'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: