本帖最后由 caicaicaicaijj 于 2015-12-27 22:51 编辑
这几天写个小东西,需要比较数字,后来发现这个现象yunsi(9, 8)
yunsi("9", 8)
yunsi("9", "8")
yunsi("19", "8") ;这个不成立的
yunsi("19", "18");但是为啥这个会成立?
Func yunsi($a, $b)
;正确写法应该为,Number一定不能省啊
;If Number($a) >Number($b) Then
If $a > $b Then
MsgBox(0, "True", $a&">"&$b&"成立")
Else
MsgBox(0, "False", $a&">"&$b&"不成立!")
EndIf
EndFunc ;==>yunsi
先看帮助'若某个字符串被当作数字进行运算,后台调用Number() 后它又并不能表示有效的数值, 则它将被假定为0."
这个比较扯,后台根本没有调用Number,我用的是3.3.9.21,不知后面版本有无改善。
居然是这个逻辑:如果不用关键字Number,带引号的数字如果位数相同是可以比较的,若位数不同则比较不成立
还有个现象
如果位数不同,且有一个为纯数字,则比较也是成立的,如下:yunsi('19', 8)
yunsi(19, '8')
也就是说比较两个数字时,只需一个带关键字Number即可
所以把上面那句改为If $a>Number($b) Then
或
If Number($a) >$b Then
即可
|