由于显而易见的原因,我们习惯于浮动不准确。我认为小数应该是准确的,因为它们代表所有以 10 为底的数字
这段代码给出了 9 的正确答案
print(27*3/9)
所以我想,哦,这是整数乘法,然后是除法,这就是它准确的原因
但是不,这给了我们正确的 9.0:
print(27*(3/9))
那么为什么
print(Decimal(27)*(Decimal(3)/Decimal(9)))
给出错误的 8.999999999999999999999999999
我知道 3/9 是 0.333...不能表示为终止小数。但是为什么 base 2 float 是准确的呢?