奇怪的等式判断,求助
代码如下: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的人指教一下,问题出在哪里? 用strcomp字串比较看看.
似乎是vbs的浮点运算出了问题 . 昨晚百度了一下。。。似乎浮点数不能用=比较,那么把判断条件改成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的帮助 用 eval(Cdbl(Single_NetPrice)=Cdbl(Par_Price*(1-Discount/100)+Sup_Retain)) 看下
页:
[1]