关于Excel VBA 数值运算mod和\的问题。

使用VBA编写代码:
Sub chufa()
Dim result1, result2
result1 = 10.5 \ 3
Debug.Print "10.5 \ 3="; result1
result2 = 10.5 Mod 3
Debug.Print "10.5 mod 3="; result2
End Sub
输出:
10.5 \ 3= 3
10.5 mod 3= 1
不是在进行计算的时候,应该先四舍五入,即10.5变成11,这时候11mod3不应该等于2吗?为什么结果是1呢?

运算符 mod 的帮助文件:

Mod 运算符

用来对两个数作除法并且只返回余数。

语法

result = number1 Mod number2

Mod 的语法具有以下几个部分:

部分 描述
result 必需的;任何数值变量。
number1 必需的;任何数值表达式。
number2 必需的;任何数值表达式。

说明

在进行 Mod 运算或求余数运算时,该运算符将 number1 用 number2 除(将浮点数字四舍五入成整数),并把余数作为 result 的值返回。例如,在下列表达式中,A (result) 等于 5。

A = 19 Mod 6.7

一般说来,不管 result 是否为一个整数,result 的数据类型为 Byte,Byte 变体、Integer、Integer 变体、Long 或一个包含 Long 的 Variant。任何小数部分都被删除。但是,如果任何一个 Null,类型的表达式出现时,result 都将是 Null。任何 Empty 类型表达式都作为 0 处理。

本例中,10.5 mod 3 先用10.5除以3,得3余1.5,理应返回1.5 但返回值不为小数,小数部分被删除,故结果为1.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-03
谁告诉你是四舍五入的?
Sub test()
'VBA中不是四舍五入,而是 _
四舍六入五成双
Debug.Print 10.5 Mod 3
Debug.Print 10.55 Mod 3
Debug.Print 10.6 Mod 3
End Sub本回答被提问者采纳
第2个回答  2015-02-03
小数点后不是5的情况:四舍六入
小数点后是5的情况:判断整数部分,偶舍奇入。所以10.5 mod 3变成10 mod 3
相似回答