Office中国论坛/Access中国论坛
标题:
IIf 函数的陷阱
[打印本页]
作者:
t小宝
时间:
2015-5-13 22:21
标题:
IIf 函数的陷阱
IIf 函数有3个参数,可以是3个表达式,第1个表达式的值为真时返回第2个表达式的值,为假则返回第3个表达式的值。
虽然只是返回1个值,但IIf却要把所有表达式都计算一遍。按理说第1个表达式为真时,只计算第2个表达式的值即可,但却多余地把第3个表达式也计算了。因为这个原因,使得IIf函数的效率比较低,更严重的是还造就了一个陷阱。
请看下面的代码:
y = IIf(x = 0, 0, 1 / x)
为了避免除0错误,在IIf的第1个参数中判断当x=0时,直接返回0。但当x真的等于0时,结果还是会出现除0错误,因为IIf把第3个表达式也计算了!
作者:
linlancxh
时间:
2015-5-13 22:23
{:soso_e100:}
作者:
tmtony
时间:
2015-5-13 22:24
这个的确是的。很多人会忽略这个问题。很好的释疑的文章!
作者:
purplerose
时间:
2015-5-13 22:39
即然能意识到有陷阱,那如何去避免呢?希望小宝老师能有解!{:soso_e121:}{:soso_e183:}
作者:
t小宝
时间:
2015-5-13 22:44
purplerose 发表于 2015-5-13 22:39
即然能意识到有陷阱,那如何去避免呢?希望小宝老师能有解!
目前想到的只有用if语句了
if x=0 then
y=0
else
y=1/x
end if
作者:
todaynew
时间:
2015-5-14 08:15
原来如此
作者:
盗梦
时间:
2015-5-14 08:51
嗯嗯,这个我也碰过,所以现在很少用iif
作者:
风中漫步
时间:
2015-5-14 16:26
谢谢分享.
作者:
轻风
时间:
2015-5-15 10:05
不说还真不知道,谢谢小宝。
作者:
wang1950317
时间:
2015-5-15 11:54
小宝老师真是细心、严谨。
作者:
purplerose
时间:
2015-5-18 16:07
谢谢小宝老师解答,只有用IF()来分开执行了{:soso_e121:}{:soso_e183:}
作者:
lxzhang
时间:
2015-5-18 17:17
如何解决此问题。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3