51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2300|回复: 5
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2009-6-19 22:36:44 | 只看该作者
楼上的讲的让我想起了

程序设计里面 比较浮点数一般用 差 的绝对值 小于多少来表示
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-6-18 17:00:49 | 只看该作者
比如一个浮点数K,它和零值做比较的时候能直接if K=0 then ...吗?,如果是整形变量,那么很显然直接和0比较就是了
答案肯定是否的,在计算机内部其实是不能精确的表示一个浮点数的,如上情况我想是同样的道理
LZ查查相关的资料把
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-6-18 16:24:37 | 只看该作者

回复 2# 的帖子

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

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-6-18 16:21:41 | 只看该作者
你弄带小数的 400.08

多循环几次看看有没有一次出错的
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2009-6-18 13:47:00 | 只看该作者

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 编辑 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 07:09 , Processed in 0.078303 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表