为什么“ getcontext()。prec = 2”实际上没有设置为使Decimal()的使用达到两位小数?

时间:2019-06-10 20:55:54

标签: python decimal

我正在编写一个处理货币值的程序,因此我希望它使用十进制输出到小数点后两位。不幸的是,这不起作用,并且输出的数字更长。

我已经在线浏览了一下,但是到目前为止,对于这个特定问题,似乎还没有任何答案,以防万一在程序的其余部分中发生了某些事情,我只是在上面运行了一段测试代码一个基本数字和相同的结果发生了,所以这不是我的代码的其余部分。在下面测试。

from decimal import *
getcontext().prec = 2
test = Decimal(5.859)
print(test)

我希望它能打印出5.86的输出,或者,如果输出没有沿期望的方向舍入,则输出至少为5.85。

它打印出来了。

5.8589999999999999857891452847979962825775146484375

与从未使用过getcontext().prec = 2的输出相同

请注意python的一些新知识,所以请不要仅仅假设如果您不加解释就向我扔随机代码,我就会完全知道您的意思。

1 个答案:

答案 0 :(得分:1)

根据this文档,上下文精度和舍入仅在算术运算期间起作用。因此,为了实现您的目标,您可以执行以下操作:

from decimal import *
getcontext().prec = 3
test = Decimal('5.859')/Decimal('1')
print(test)

输出:

Decimal('5.86')