# Used "==" and "is" for equality
print(48 / 10 == 48 * 0.1)
print(48 / 10 is 48 * 0.1)
print()
# Check Both Answers Individually
print(f"48 / 10 = {48 / 10}")
print(f"48 * 0.1 = {48 * 0.1}")
在下面的代码中,我认为这两个表达式会相等,但事实并非如此。这就是它的输出。
False
False
48 / 10 = 4.8
48 * 0.1 = 4.800000000000001
有人能解释一下为什么结果会有差异吗,无论你是用除法还是乘法?
即使乘以0.1和除以10在数学上是相等的,但在计算机程序中它们不是。
当你用Python编写0.1
时,你得到的不是十分之一。稍微多一点。这里是0.1
到40位精度:
>>> "%0.40f" % 0.1
'0.1000000000000000055511151231257827021182'
这种差异是由于浮点数使用二进制表示。你不能用有限数量的二进制数字精确地表示0.1,就像你不能用无限数量的十进制数字精确地表达1/3=0.333333一样。
由于0.1
略高于十分之一,因此您应该期望48*0.1
略高于4.8。它是:
>>> "%0.40f" % (48*0.1)
'4.8000000000000007105427357601001858711243'
您也不应该期望4.8
等于4.8。事实上,它略低于4.8:
>>> "%0.40f" % (4.8)
'4.7999999999999998223643160599749535322189'