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".这是为什么?
这是因为浮点数不能精确表示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)