http://topic.csdn.net/u/20100703/10/95ca83c4-54a2-4ebc-9291-86faad828d99.html
在这个帖子,感谢vbman2003提供了(x <> y)的用法.
有关这个知识的应用需要进一步消化理解.
    Dim nn As Double
    Dim x As Double
    Dim y As Long    nn = rnd * 100 
    x = nn / 5
    Select Case x       'nn<=10
        Case Is <= 2
            nn = 10
        Case 2 To 6     'nn=10~30
            y = nn \ 5
            nn = y * 5 - (x <> y) * 5 '非5倍数,整除5后再加5
        Case Else:      'nn>30
            x = nn / 10
            y = nn \ 10
            nn = y * 10 - (x <> y) * 10 ''非10倍数,整除10后再加10
    End Select此程序解决的问题,"自定义数据进位的规则运算",请vbman2003大侠看一这个定义是否准确.谢谢假设输入数据nn=14.5
y:---          2 
y * 5:--       10 
(x <> y) * 5:--                 -5 目标需求成立
 nn = y * 5 - (x <> y) * 5  结果为 15问题提出(x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢

解决方案 »

  1.   

    你把x<>y换成iif(x=y,0,-1)这样就好理解多了
    x<>y=true=-1或者false=0,就是这样的
      

  2.   

    (x <> y) 布尔值非0(true)即-1(false)
      

  3.   

    谢谢,楼上的各位的回复.
    http://topic.csdn.net/u/20100703/10/95ca83c4-54a2-4ebc-9291-86faad828d99.html的题目是<数据按档位进行靠位运算>,自己感觉不但绕口,还不好理解.
    现在改为<自定义数据进位的规则>是否可行,还有没有更好的定义.
    2 (x <> y) * 5 if x <> y thenelse
     (x <>)  * 5 = -1 * 5 ' 是不是这种理解??
    end if
      

  4.   

    x<>y 是比较一个表达式,返回的数值类型为boolean, 如果其成立返回true,不成立返回false...Boolean转换为其他的数据类型时,False成为0,而True成为-1。nn = y * 5 - (x <> y) * 5 是个运算表达式,其中(x <> y)的比较结果隐式的转换为了-1或0....
      

  5.   

    还有,你可以按F8单位步调试,这样用鼠标移动到相应的变量上,就可以看到变量变化...当nn=14.5,
    x= 14.5 / 5 结果为 2.9 在 case 2 to 6 这个范围中...
    y= 14.5 \ 5 整除的结果为2
    那么在表达式nn = y * 5 - (x <> y) * 5中,x <> y成立,返回-1,所以(x <> y) * 5得-5
    结果就是y=2*5 + 5 为15....
      

  6.   

    (x <> y) * 5 的结果为 -5,这个知识点需要从哪里获得.谢谢
    ------------------------------------------------------
    尽量不要这样写。这是很没有可读性的代码。是大忌。