51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 奇怪的等式判断,求助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-1 18:16:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:
If Single_NetPrice=Cdbl(Par_Price*(1-Discount/100)+Sup_Retain) Then
        Reporter.ReportEvent micPass, "验证公式一:单张采购净价=票面价x(1-采购奖励)+供应商留款","验证通过"
    else
        Reporter.ReportEvent micFail,"验证公式一:单张采购净价=票面价x(1-采购奖励)+供应商留款","验证错误,单张采购净价=【"&Single_NetPrice&"】,票面价x(1-采购奖励)+供应商留款=【"&Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)&"】"
End If
debug时执行if前的各变量值如下:
Single_NetPrice=754.9
ParPRice=950
Discount=20.6
Sup_Retain=0.6

Reporter的结果显示两边的值都是754.9,但是执行的是Else后面的语句
以上变量在取值时都用Cdbl转过数据类型
也试过Cdbl(Single_NetPrice)=Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)结果还是执行else
print Single_NetPrice-Cdbl(Par_Price*(1-Discount/100)+Sup_Retain的结果是-1.13686837721616E-13
小弟对代码不是很熟悉,请各位熟悉VBS的人指教一下,问题出在哪里?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-12-1 22:55:21 | 只看该作者
用strcomp字串比较看看.

似乎是vbs的浮点运算出了问题 .
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-12-2 09:50:52 | 只看该作者
昨晚百度了一下。。。似乎浮点数不能用=比较,那么把判断条件改成abs(Single_NetPrice-Cdbl(Par_Price*(1-Discount/100)+Sup_Retain))<0.001就可以判定等式两边相等?
或者使用Round函数取小数位数2,但是会有四舍五入问题吧?
Round(Single_NetPrice,2)=Round(Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)),2)

另感谢softCore的帮助
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-12-2 15:36:01 | 只看该作者
用 eval(Cdbl(Single_NetPrice)=Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)) 看下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-6 05:14 , Processed in 0.065291 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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