如果声明条件不满足,但程序仍然有效

Cur*_*ity -1 python if-statement

我有一个简单的代码

def func(a,b):
    if (b>=3.0) and (b<=4.0):
        if (a>=3.0) and (a<=6.0):
            var_region='A'
        if (a>6.0) and (a<=11.0):
            var_region='B'
    if (b>4.0):
        var_region='C'

    region=var_region
    print region
    return region


Tmax=4.1
Tmin=3.0
T=Tmin
var=3.0
dT=0.1
while T<Tmax:
    calll=func(var,T)
    T=T+dT
Run Code Online (Sandbox Code Playgroud)

该计划的输出是:

A,A..........,C
Run Code Online (Sandbox Code Playgroud)

在while循环中,"T"的最终值为4.0,它打印"C"而不是"A".这是为什么?

Yu *_*Hao 5

这是因为浮点数不能精确表示float,因此其计算也不精确.b不是精确的4.0,而是一个非常接近它的浮点数.添加此内容可能有助于您了解:

if (b>4.0):
    print(repr(b))
    var_region='C'
Run Code Online (Sandbox Code Playgroud)

输出:

4.000000000000001
C
Run Code Online (Sandbox Code Playgroud)