moonpaths 发表于 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的人指教一下,问题出在哪里?

softCore 发表于 2009-12-1 22:55:21

用strcomp字串比较看看.

似乎是vbs的浮点运算出了问题 .

moonpaths 发表于 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的帮助

blueeagle999 发表于 2009-12-2 15:36:01

用 eval(Cdbl(Single_NetPrice)=Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)) 看下
页: [1]
查看完整版本: 奇怪的等式判断,求助