51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1922|回复: 3
打印 上一主题 下一主题

一个奇怪的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-1-21 14:11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么在我的WinRunner上
3*647.60  不等于 1942.80
差别是:2.273736754e-013
谁帮试试看?谢谢!

if (3*647.60 == 1942.80)
        tl_step("test",0,"pass");
else
        tl_step("test",1,"fail");
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2005-1-21 17:58:15 | 只看该作者
记得在学C的时候曾听老师说过,对于float(或double)变量运算编程是受限于精度限制,会有一定的误差,不可能完全相等,小于一定的误差(多少就忘了)就可以视为相等,可以这样:
num = 3.0*647.6;
if ((num - 1942.8) < 1.0e-6)
        pause("pass");
else
       pause("fail");
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-1-21 18:03:30 | 只看该作者
Winrunner应该处理过才对,像字符串和数字就不分类型的。
而且其他好多类似的算出来都没问题,换成4*647.6也没问题,怪!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2005-1-21 22:15:08 | 只看该作者
应该是会有误差的
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-3 16:23 , Processed in 0.064935 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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