2012-08-31 7 views
0

我刚刚开始使用Python 2.7,并试图构建一个简单的信用付款计算器作为测试。根据我所能找到的,十进制函数应该强制程序计算到特定的小数位数。从文档页数:为什么我在使用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)我得到th e输出Decimal ('5')。谁能告诉我我做错了什么?

+0

thanx编辑迈克尔它看起来很奇怪它的方式仍然试图找到我的方式在这里 – androshalforc

回答

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

+0

看起来像它会工作我不认为你会有一个链接,所以我可以读更多的格式字符串? – androshalforc

+0

添加参考链接 –

+0

@Joran:十进制数字可以精确表示。特别是对于财务应用程序,如果您尝试使用浮点数而不是十进制算术(在Python 2.4中引入),那是一团糟。 –

3

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

相关问题