当我使用Python 2.7的十进制函数时,为什么我没有看到我的期望?

时间:2012-08-31 01:59:19

标签: python decimal

我刚刚开始使用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')。谁能告诉我我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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