51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

3*647.6<>1942.8?,关于winrunner数值的计算!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-3-30 10:35:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用 winrunner 7.5 ,示例程序 fight 1A ,gui map: fight_cchs

测试 每个 order 的 票总数与计算值是否相等(书上的例子)

在 fax order 中,读取了 tickets,price,total 三个,如下:

edit_get_text("# Tickets:",tickets);
edit_get_text("Ticket Price:",price);
edit_get_text("Total:",total);

利用数据驱动对每个 order 进行测试后,发现 tickets 为 3 的数据计算总是出错

我的判断是这样的:

if(tickets*price == total)
   tl_step("total",0,"Correct. "tickets" tickets at $"price" cost $"total".");
else
{   
    tl_step("total",1,"Error. "tickets" tickets at $"price" does not equal $"total".");
    report_msg(tickets*price);
}

总是会报错,后来我发现计算值减总数: tickets*price - total竟然不等于零,竟然是 2.273736754 E-13

晕啊,这是怎么回事??,只有数据是 3的时候出现这个错误,
后来我采取:
tickets=sprintf("%.3f",tickets);
                price=sprintf("%.3f",price);
                total=sprintf("%.3f",total);

依然不行,这是怎么回事??

谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2005-3-30 10:52:38 | 只看该作者
晕,取小数点后1位
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-3-30 11:05:22 | 只看该作者
不行,有的计算植延伸到后两位了

还有,我 %.16f  发现 取值 647.60000000000000020 ,多出一个 “2”,是内存存储上的原因吗`?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2005-3-30 13:59:49 | 只看该作者
期待有朋友解答`~`
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-3-30 15:02:42 | 只看该作者
二进制来表达十进制就是有点误差的,对于浮点的。取1.0e-6以上的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2005-3-31 12:53:31 | 只看该作者
那也就是说。没有办法在测试中避免这个误差了`?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 16:49 , Processed in 0.067702 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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