MOD的结果只能是整数,有没有办法求出带小数点的结果呢?
例如:
Text3.Text = CSng(CSng(Text1.Text) Mod CSng(Text2.Text))
text1.text=0.04
text2.text=5
用计算器计算
text3.text=0.04
可是用CSng(CSng(Text1.Text) Mod CSng(Text2.Text))求出来的总是0
有没有办法得出真正的没有舍位的结果?

解决方案 »

  1.   

    mod只对整数。
    比如求1.230对于2.389的模不行。
    你可以用数值运算方法实现。
      

  2.   

    不对呀,可以对小数求摸,msdn的例子就是
      

  3.   

    Private Sub Command2_Click()
    MsgBox xmod(7.04, 5)
    End Sub
    Function xmod(ByVal x As Double, ByVal y As Integer) As Double
    Dim intx As Integer
    intx = Int(x)
    xmod = x - intx + intx Mod y
    End Function
      

  4.   

    1、MSDN中关于模运算的定义:result = number1 Mod number2
    在进行 Mod 运算或求余数运算时,该运算符将 number1 用 number2 除(将浮点数字四舍五入成整数),并把余数作为 result 的值返回。result 的数据类型为 Byte,Byte 变体、Integer、Integer 变体、Long 或一个包含 Long 的 Variant,任何小数部分都被删除。
    因此它是相对于整数进行运算的。
    2、如果按照你的意思,是要把模运算意义在小数方面进行扩充,可以如下处理,比较两个结果,应该可以感受到整数与小数之间的差异:
    Function MyMod(X As Double, Y As Double) As Double
      Dim DoubleA As Integer
      Dim IntB As Integer
      DoubleA = X / Y
      IntB = CInt(DoubleA)
      
      MyMod = X - (Y * IntB)
    End Function
    Private Sub Form_Load()
      Me.Print MyMod(0.04,5)
      Me.Print MyMod(10.04, 5)
    End Sub
    结果:.04 
          3.99999999999991E-02
      

  5.   

    你可以把两个数扩大10^n倍,使两个数都为整数,然后再对它mod,结果再除以10^n。
      

  6.   

    你要的结果=x-int(x)+int(x) mod y
    明白没?
    楼上各位的解法我没看,可能比我好。
    楼主自己试试!