为什么float是准确的,而decimal是错误的?

问题描述 投票:0回答:0

由于显而易见的原因,我们习惯于浮动不准确。我认为小数应该是准确的,因为它们代表所有以 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 是准确的呢?

python floating-point decimal
© www.soinside.com 2019 - 2024. All rights reserved.