不等式问题:0< = - 0.0不是真的

时间:2014-08-11 09:06:47

标签: python zero inequalities

我在for循环中有一个if语句,它运行x的数字值,并根据x计算h的值。我已经包含了以下代码。在零时(t=0.0xa=-0.0xb =0.0

问题出现在x=0时。在x=0,我希望代码遵循第一个if语句,因为x小于或等于0。然而,它并没有进入最后一个if语句并且执行它。现在我的想法是问题与x= 0xa=-0.0有关,而python不喜欢这个?

如果有人能够对这个问题有所了解,为什么会发生这种情况,如果问题有解决办法,或者确实存在不同的问题,那就太好了。

__author__="ahe"
__date__ ="$05-Aug-2014 11:22:44$"

import numpy as np
import matplotlib.pyplot as plt 
import math 
import sys
from math import sqrt  
import decimal
import pylab 

nx, ny = (100,100)
x5 = np.linspace(-2000,2000,nx)
y5 = np.linspace(0,600,ny)
xv,yv = np.meshgrid(x5,y5)
x = np.arange(-2000.0,2001.0,1.0)
print len (x)

h0=0.03
g=9.81
t=0.0

term1=4.0/(9.0*g)
term2=math.sqrt(g*h0)
print 'term1=',term1,'term2=',term2 

xa=-term2*t
xb=term2*2*t

h=np.zeros(len(x))

for i in range (len(x)):
   if x[i]<=xa:
      h[i]=h0
   elif (xa<x[i]<xb):
      h[i]=term1*((term2-(x[i]/(t*2.0)))**2.0)
   else:
      h[i]=0


print 'xa=',xa,'xb=',xb

h1=np.zeros(len(x))

f = open(r'C:\opentelemac\bluetang\examples\telemac2d\ritter\4D0.i3s', 'r')
while True:
   line = f.readline()
   if line[0] not in [':','#']: break
ran = int(line.split()[0])
length = np.zeros(ran)
wse =  np.zeros(ran)
for i in range (ran):
   fields = f.readline().split()
   length[i] = float(fields[0])
   wse[i] = float(fields[2])
   all =[length[i],wse[i]]

print x[1995:2005]
print h[1995:2005]



plt.figure(2)
plt.plot(length,h, marker='o', linestyle='--')
plt.plot(length,wse)
plt.legend(['Analytical solution_0','Model_0'], loc='upper right')
plt.show()

1 个答案:

答案 0 :(得分:2)

其实这是真的

Python 2.7.4 (default, Sep 26 2013, 03:20:26) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0 <= -0.0
True

所以你可能没有正确诊断你的问题。