Python 十进制 ROUND_UP InvalidOperation

标签 python decimal rounding

为什么要转换为 2 位小数的数字?

x = 369.69

y=decimal.Decimal(x)
Decimal('369.68999999999999772626324556767940521240234375')

即使我已经声明

getcontext().prec = 2       

那么为什么如果我尝试让汇总得到370.00:

y.quantize(decimal.Decimal('0.01'),rounding=decimal.ROUND_UP)

最终出现此错误:

InvalidOperation: quantize result has too many digits for current context quantize result has too many digits for current context

最佳答案

问题是 x 是一个 float ,因此一旦分配给 x 就会失去精度。如果您想解决此问题,可以将 x 设为字符串 "369.69"。从字符串构建的 Decimal 将具有精确的精度。

关于Python 十进制 ROUND_UP InvalidOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081731/

相关文章:

python - 在 Python 中哪里使用 decimal.ROUND_05UP?

java - Java中如何将数字四舍五入到小数点后n位

mysql - 逗号后面多少个地方需要得到正确的四舍五入

python - 我如何在数据帧python中找到非时间戳数据?

python - math.gcd() 与欧几里得算法

c - 将十六进制 printf 输出存储到变量

java - 具有智能精度(比例)的 BigDecimal

python - 从 nodejs 运行 python 脚本并返回 json

python - Python 字符串中的内联子字符串交换

audio - WAV/RIFF-文件头中的文件大小错误?