【发布时间】:2020-03-01 04:47:59
【问题描述】:
我最近在处理浮点数,我意识到浮点数有一些我没想到的东西。这是一个例子
a = 0.1
print(f"{a:0.20f}")
#'0.10000000000000000555'
b = a * 10
print(f"{b:0.20f}")
#'1.00000000000000000000'
我希望最后一次打印输出1.00000000000000005551(即,1 后跟0.1 的数字 1 到 21)。
我很好奇的是为什么浮点误差在乘以 10 时会消失。正常的算术规则表明浮点误差会被传播,但实际上并没有发生。为什么会发生这种情况?有没有办法避免它?
【问题讨论】:
-
这能回答你的问题吗? Is floating point math broken?
-
没有。我显然知道小数可能有浮点错误。我很好奇的是为什么浮点误差在乘以 10 时会消失。正常的算术规则表明浮点误差会被传播,但实际上并没有发生。
标签: python floating-point precision