Python十进制精度

时间:2020-10-11 13:46:48

标签: python decimal

为什么在第二行中设置decimal.getcontext().prec = 1时会看到decimal.getcontext().prec = 2

decimal.getcontext().prec = 2
decimal.getcontext().rounding = 'ROUND_HALF_DOWN'

print(decimal.Decimal(1) / decimal.Decimal(7))
print(decimal.Decimal(9949) / decimal.Decimal(1000))

# 0.14
# 9.9

1 个答案:

答案 0 :(得分:2)

在这种情况下,数字9.9的精度为2。

摘自Significant figures上的Wikipedia文章:

精度(又称有效数字或有效数字)定义为:

个数字,对其测量分辨率有重要贡献。这包括除以下以外的所有数字:

  • 所有前导零。例如,“ 013”有两个有效数字:1和3
  • 在零只是占位符时指示数字的比例(精确规则在标识有效数字时进行解释)
  • 例如通过以比原始数据更高的精度进行计算或以比设备支持的精度更高的精度报告的测量结果引入的虚假数字。

解释重要数字规则

在书写或解释数字时识别重要数字的规则如下:

  • 所有非零数字均视为有效数字。例如,91具有两个有效数字(9和1),而123.45具有五个有效数字(1、2、3、4和5)。
  • 出现在两个有效数字之间的零是有效的:101.1203有七个有效数字:1、0、1、1、2、0和3。
  • 有效数字左边的零(前导零)不重要。例如,0.00052有两个有效数字:5和2。
  • 如果非零数字(尾随零)位于小数点右边,则为零是很重要的,因为这些仅用于表示精度。但是,根据测量的精度,在零位或更高的零位可能有意义,也可能不会有意义。因此1.20和0.0980具有三个有效数字,而45,600可具有3、4或5个有效数字。请注意,120.00将有五个有效数字-小数点左边的零是有效的,因为它在两个有效数字之间(小数点右边的2和零)。

要将十进制数字四舍五入到小数点后两位,可以执行以下操作:

decimal.getcontext().prec = 5
print(f"{decimal.Decimal(9949) / decimal.Decimal(1000):.2f}")

输出

9.95
相关问题