请教高手,我的飞机订票脚本哪里有错误?
题目为飞机订票检查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 :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 编辑 ] 你弄带小数的 400.08
多循环几次看看有没有一次出错的
回复 2# 的帖子
关键是我从系统中 取栏Price的text属性不仅仅是字符串还是实数型的,小数点后有两位 比如一个浮点数K,它和零值做比较的时候能直接if K=0 then ...吗?,如果是整形变量,那么很显然直接和0比较就是了
答案肯定是否的,在计算机内部其实是不能精确的表示一个浮点数的,如上情况我想是同样的道理
LZ查查相关的资料把 楼上的讲的让我想起了
程序设计里面 比较浮点数一般用 差 的绝对值 小于多少来表示
页:
[1]