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
有没有办法得出真正的没有舍位的结果?
例如:
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.230对于2.389的模不行。
你可以用数值运算方法实现。
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
在进行 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
明白没?
楼上各位的解法我没看,可能比我好。
楼主自己试试!