为什么在使用Python 2.7';s十进制函数?

为什么在使用Python 2.7';s十进制函数?,python,decimal,Python,Decimal,我刚刚开始使用Python2.7,并尝试构建一个简单的信用支付计算器作为测试。根据我所能找到的,decimal函数应该强制程序计算到特定的小数位数。从文档页面: >>> from decimal import * >>> getcontext().prec = 6 >>> Decimal(1) / Decimal(7) Decimal('0.142857') >>> getcontext().prec = 28 >&g

我刚刚开始使用Python2.7,并尝试构建一个简单的信用支付计算器作为测试。根据我所能找到的,decimal函数应该强制程序计算到特定的小数位数。从文档页面:

>>> 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。如果我键入
Decimal(5)
Decimal(total)
我将得到输出
Decimal('5')
。谁能告诉我我做错了什么吗?

为什么不直接格式化字符串呢

 >>> print "{0:0.2f}".format(5)
 5.00
对不起,我对十进制软件包一无所知,所以我真的不能帮你……我从来没有真正理解十进制软件包的需求,或者说它的定位


为什么不直接格式化字符串呢

 >>> print "{0:0.2f}".format(5)
 5.00
对不起,我对十进制软件包一无所知,所以我真的不能帮你……我从来没有真正理解十进制软件包的需求,或者说它的定位


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

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

这看起来会起作用。我不认为您会有链接,以便我可以阅读有关格式字符串的更多信息?@Joran:十进制数可以精确表示。特别是对于金融应用程序,如果您尝试使用浮点数而不是十进制算术(在Python 2.4中引入),则会有点混乱。啊,明白了,谢谢。。。浮点数对我的东西来说很好,我想它看起来会起作用。我不认为你会有链接,这样我就可以阅读更多关于格式字符串的内容了?@Joran:十进制数字可以精确表示。特别是对于金融应用程序,如果您尝试使用浮点数而不是十进制算术(在Python 2.4中引入),则会有点混乱。啊,明白了,谢谢。。。花车对我的东西来说很好我认为它对编辑迈克尔来说看起来很奇怪我还在努力找到我在这里的路对于编辑迈克尔来说它看起来很奇怪我还在努力找到我在这里的路