0

我刚刚开始使用 Python 2.7,并正在尝试构建一个简单的信用支付计算器作为测试。据我所知,十进制函数应该强制程序计算到特定的小数位数。从文档页面:

>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')

所以我的理解是,如果我输入以下内容:

from decimal import *
getcontext().prec=2
total =5
print Decimal(total)

我应该得到以下

5.00

但是,它会一直打印 5。如果我输入Decimal (5)Decimal (total)得到输出Decimal ('5')。谁能告诉我我做错了什么?

4

2 回答 2

3

您设置的精度是计算的数学精度。它与打印的小数位数无关。默认情况下,Decimal实例将打印其自身的最短文本表示。要以其他方式打印,请使用 Python 字符串插值(%运算符)或format()字符串方法。

于 2012-08-31T02:08:55.137 回答
2

你为什么不只做格式字符串?

 >>> print "{0:0.2f}".format(5)
 5.00

抱歉,我对十进制包一无所知,所以我真的无法帮助你...我从来没有真正理解十进制包的需求或利基

http://www.shocksolution.com/2011/11/python-string-format-examples/

http://docs.python.org/library/string.html#formatspec

于 2012-08-31T02:01:49.973 回答