python - Python decimal.Decimal - getcontext().prec 设置和输出中的小数位数
问题描述
我想使用decimal.Decimal对转换后的数字字符串进行算术运算。无论转换后的数字字符串有多少小数,我都希望返回有两位小数。
在这种特殊情况下,为什么两位小数精度给我一个小数返回,为什么三位小数精度给我我想要的回报(2 个小数 -> 2.15)
from decimal import *
getcontext().prec = 2
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a), print(b), print(a-b)
>>> 2.60 0.45 2.2
getcontext().prec = 3
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a, b, a-b)
>>> 2.60 0.45 2.15
解决方案
设置Decimal lib 将用于返回任何计算出的数字的数字精度,即 prec = 2 将返回 2 个数字(first=2,second=2)并且在 prec = 3 中将显示三个数字(first = getcontext().prec
2 ,第二=1,第三=5)。
但是,这里有一个技巧。当您创建 a 和 b 变量时, Decimal 用作您提供给它的数字的位数的精度。您可以看到在您的 IDLE 中只调用 a 或 b。
推荐阅读
- angular - 如何从订阅返回数据到 HttpClient
- javascript - 从选项卡 A 打开一个新选项卡,需要从选项卡 B 打开同一个选项卡。但不是打开一个新选项卡,而是现有选项卡应该获得焦点
- sharepoint - 无法搜索用于 Microsoft Graph Explorer 的文件
- java - 来自 RestController 的 Spring Boot 响应中没有缓存标头
- php - 如何使用 PHP 在 BLOB 字段中编辑 JSON 字符串?
- jmeter - 使用线程组的名称作为结果时间图的文件名的一部分
- php - 根据用户角色更改 WooCommerce 默认货币
- java - JUnit5:如何通过单个断言调用断言对象的多个属性?
- reactjs - 间隔不会导致反应组件中的重新渲染
- python-3.x - Pygame,当我制作游戏时,你如何修复屏幕的一部分变黑?