python - 为什么 "getcontext().prec = 2"没有实际设置它,以便 Decimal() 的使用达到两位小数?

标签 python decimal

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

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

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

我预计它会打印 5.86 的输出,或者在最坏的情况下,如果它没有按所需方向舍入,至少会打印 5.85。

相反,它打印了。

5.8589999999999999857891452847979962825775146484375

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

请注意,对于 python 还算陌生,所以如果你在没有解释的情况下向我抛出随机代码,请不要假设我会确切地知道你的意思。

最佳答案

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

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

输出:

Decimal('5.86')

关于python - 为什么 "getcontext().prec = 2"没有实际设置它,以便 Decimal() 的使用达到两位小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56533413/

相关文章:

javascript - 以不同的精度缩写数字

datetime - Matplotlib 在 x 轴刻度上显示多余的微秒精度

python - 在 Python 中通过管道传输到 raw_input()

用于升和毫升之间转换的Python单位模块不起作用

Python:模块和打包 - 为什么 __init__.py 文件不在 __main__.py 之前执行?

python - 如何将十六进制数转换为存储在 DWORD 而不是 QWORD 中的十进制数?

MySQL 表类型

Scala BigDecimal 如何显示更多小数?

python - urllib.error.HTTPError : HTTP Error 405: Not Allowed in python 3. X 如何摆脱机器人检测

python - RuntimeError:OrderedDict在迭代过程中发生了突变(Python3)