一个非常非常基础的问题,大家帮忙看一下~~

fox2828 2006-09-02 09:31:31
10.5 MOD 3.2=? 为什么
...全文
185 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hn123 2006-09-02
  • 打赏
  • 举报
回复
VB6中文版说这个函数是四舍五入函数,实际上这个函数采用的四舍六入五留双


----------
www.vicmiao.com
努力就有美好时光!
happy_sea 2006-09-02
  • 打赏
  • 举报
回复
楼主请注意,我第一次的解答是完全错误的,不好意思,再一次致歉!
另外已发信息给你。。。
happy_sea 2006-09-02
  • 打赏
  • 举报
回复
不好意思,犯了一个严重的低级错误,确如楼上两位所说,MOD运算前会将两个数字转换为long型,不过不完全是我们平常所说的4舍5入,对于x.5的情况,VB采用的是单进双不进的原则,即clng(1.5)=2
clng(2.5)=2
clng(3.5)=4
clng(4.5)=4
...
hn123 2006-09-02
  • 打赏
  • 举报
回复
奇进偶不进。这样在一大串需要四舍五入的数相加相减相乘时误差小一点。eg:1.25+1.35+1.45+1.55+1.15+1.65=8.4=round(1.25)+round(1.35)+round(……
ROUND函数符合国家和国际标准,该函数是正确的。原先的四舍五入只是一个简化。
在微软的Knowledge Base的文章:“Q194983 PRB: Round Function Different in VBA 6 and Excel Spreadsheet”和微软的Knowledge Base的文章:“Q189847 INFO: New String and Format Functions in Visual Basic 6.0”中都指出Round函数实行Banker舍入,而不是我们习惯的算术舍入(四舍五入)。你可以参考微软的Knowledge Base的文章:“Q196652 HOWTO: Implement Custom Rounding Procedures”,它对于舍入问题有详细的讨论。

---------
www.vicmiao.com
努力就有美好時光!
fox2828 2006-09-02
  • 打赏
  • 举报
回复
开心海,已经给你分了.谢谢
pigsanddogs 2006-09-02
  • 打赏
  • 举报
回复
内部会类型转换先

同clng(10.5) MOD clng(3.2)
vb的转换是4舍5入的..
hn123 2006-09-02
  • 打赏
  • 举报
回复
也就等於 ROUND(10.5) MOD ROUND(3.2)


-----------
WWW.VICMIAO.COM
努力就有美好時光!
happy_sea 2006-09-02
  • 打赏
  • 举报
回复
在VB中实际测试了一下得出如下结论:
进行MOD运算时如果参加运算的两个数字不为整数,那么VB将把MOD前面的数字进行5舍6入,对MOD后面的数字进行4舍5入,然后再计算余数。所以
10.5 MOD 3.2=1
10.6 MOD 3.2=2
10.6 MOD 3.5=3
fox2828 2006-09-02
  • 打赏
  • 举报
回复
语法我也知道,按照四舍五入结果应该是2,可是在环境下运行结果是1啊
迈克揉索芙特 2006-09-02
  • 打赏
  • 举报
回复
说明

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

A = 19 Mod 6.7

attractive608 2006-09-02
  • 打赏
  • 举报
回复
x mod y 求的是x整除y的余数
具体上面式子的值的话,你自己可以在vb程序中验证一下啊~~~~

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧