(x = 0.0;对于i在range(10)中x = x + 0.1; print x == 1.0)为什么输出为'false'?是在Python中添加0.1十倍不等于1.0吗?

时间:2019-05-22 02:40:49

标签: python python-3.x

这是python的一个程序。将x与1.0进行比较时,我得到'false'作为输出。请注意,我已使用for循环将0.1乘以十倍于x,其初始值为0.0。问题出在哪里 ? 此外,如果我们要求计算机-打印x。然后打印:x = 1.0。

我试图从计算机的角度解决这个问题。计算机使用二进制表示形式,并且我知道它不能为任何变量分配精确的'0.1'值,因为不能以a * 2 ^ b的形式编写0.1,但这如何导致x == 1.0成为错误的语句。

x = 0.0 
for i in range(10): 
    x = x + 0.1 
if x == 1.0: 
    print x, '= 1.0' 
else: 
    print x, 'is not 1.0'

我期望输出为:1.0 = 1.0 但是实际输出是:1.0不是1.0

0 个答案:

没有答案