brandxu 发表于 2009-6-18 12:55:45

请教高手,我的飞机订票脚本哪里有错误?

题目为飞机订票
检查Economy、Business、First三类票价满足以下关系:
First=Economy*3      Business=Economy*2

X= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
Y= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
Z= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
先取出每种票价的值为X,Y,Z

M=cdbl(mid(X,2,6))
N=cdbl(mid(Y,2,6))
Q=cdbl(mid(Z,2,6))
由于取出的text值为¥160 前面有个美元符号,我打不出来,这里用人民币符号代替“¥” 所以它是字符串类型的
mid截取字符,从第二位开始取,长度为6, cdbl是将char类型转为double

If ( N = 2 * M ) And ( Q = 3 * M ) Then
   msgbox ("符合价格关系")
else
   msgbox ("不符合价格关系")
End If

然后用一个条件语句实现,但有时候输出却不符合价格关系,这是为什么呢?
应该每次都符合的,价格都满足条件的哦,我用msgbox每步停下来看价格
这个if语句我看了半天不知道问题在哪儿,估计是if and语句有什么问题

我单用 (N = 2 * M ) 或 ( Q = 3 * M ) 都是符合价格关系的

请教一下高人

谢谢

我的脚本在如下
Window("Flight Reservation").WinRadioButton("Economy").Set
X= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
M=cdbl(mid(X,2,6))

Window("Flight Reservation").WinRadioButton("Business").Set
Y= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
N=cdbl(mid(Y,2,6))

Window("Flight Reservation").WinRadioButton("First").Set
Z= Window("Flight Reservation").WinEdit("Price:").GetROProperty("text")
Q=cdbl(mid(Z,2,6))

If ( N = 2 * M ) And ( Q = 3 * M ) Then
   msgbox ("符合价格关系")
else
   msgbox ("不符合价格关系")
End If

lvguobin 发表于 2009-6-18 13:47:00

:L
Dim n
n="$160"
Dim m
m="$320"
Dim s
s="$480"
a=cdbl(mid(n,2,6))
b=cdbl(mid(m,2,6))
k=cdbl(mid(s,2,6))
If (b=2*a) and (k=3*a) Then
        msgbox "ture",1,"massage"
else
    msgbox "false"
End If
我试了一下没问题,结果是TRUE

[ 本帖最后由 lvguobin 于 2009-6-18 14:22 编辑 ]

brandxu 发表于 2009-6-18 16:21:41

你弄带小数的 400.08

多循环几次看看有没有一次出错的

brandxu 发表于 2009-6-18 16:24:37

回复 2# 的帖子

关键是我从系统中 取栏Price的text属性
不仅仅是字符串还是实数型的,小数点后有两位

dabie 发表于 2009-6-18 17:00:49

比如一个浮点数K,它和零值做比较的时候能直接if K=0 then ...吗?,如果是整形变量,那么很显然直接和0比较就是了
答案肯定是否的,在计算机内部其实是不能精确的表示一个浮点数的,如上情况我想是同样的道理
LZ查查相关的资料把

brandxu 发表于 2009-6-19 22:36:44

楼上的讲的让我想起了

程序设计里面 比较浮点数一般用 差 的绝对值 小于多少来表示
页: [1]
查看完整版本: 请教高手,我的飞机订票脚本哪里有错误?