为什么“getcontext().prec=2”没有实际设置它,使Decimal()的使用变为小数点后两位?

2024-04-20 04:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个处理货币值的程序,因此我希望它输出到小数点后两位,不幸的是,这不起作用,它输出的数字要长得多。你知道吗

我在网上查了一下,但到目前为止,似乎还没有任何关于这个特定问题的答案,以防它发生在程序的其他部分,我运行了一个测试代码块,使用它只是一个基本的数字,同样的结果发生了,所以它不是我的代码的其余部分。测试如下。你知道吗

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

我希望它打印出5.86的输出,或者在最坏的情况下,如果它没有按期望的方向旋转,至少打印出5.85。你知道吗

取而代之的是印刷品。你知道吗

5.8589999999999999857891452847979962825775146484375

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

请注意,对python还比较陌生,所以请不要仅仅假设我知道你的意思,如果你在没有解释的情况下向我抛出随机代码。你知道吗


Tags: 答案代码fromtestimport程序货币情况
1条回答
网友
1楼 · 发布于 2024-04-20 04:23:24

根据this文档,上下文精度和舍入仅在算术运算期间起作用。所以,为了实现你的目标,你可以这样做:

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

输出:

Decimal('5.86')

相关问题 更多 >