ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 蜻蜓拿瓢看水,小述MOD函数

蜻蜓拿瓢看水,小述MOD函数

作者:绿色风 分类: 时间:2022-08-18 浏览:127
楼主
Violet_Universe
对于MOD函数参数全为正整数的我们不作深入讨论,只简单描述
一、第二参数为正数的情况
如=MOD(-2,3),函数是怎么得到结果的呢,首先让我们看看我们家的时钟吧
(1)以MOD(2,3)为例,形象如时钟1,函数会画个周期圆,3等分(以第二参数为标准)        
  注意:划分的时候是以顺时针绝对值增大的方向划分的,划好以后等人来转圈圈        
  然后由第一参数来绕圈跑,但是绕圈的方向是由自己与圆的划分方法(第二参数)决定的        
  因为圆的划法是顺时针且绝对值增大划分的,这个时候要看第一参数与第二参数的符号是否相同        
  很显然第一参数2也是正数,第二参数也是正数,所以第一参数就做了下面的动作        
  从圆的0点出发也是顺时针走了2步,很显然落在了圆的2点位置上,所以MOD(2,3)的值就是2        
(2)以MOD(-2,3)为例,时钟怎么划分呢?跟上面的原理一样,以顺时针绝对值增大的方向划分的,        
  划好以后等第一参数来转圈        
  第一参数一看,自己与第二参数符号相反,所以第一参数-2背道而驰(逆时针)从原点走了两步        
  正好落在了时钟的1上面,所以MOD(-2,3)的值就是1        

一、第二参数为负数的情况
  我们依然以第二参数绝对值是3来说明(其他数字原理完全一样)
(1)以MOD(2,-3)为例,形象如时钟2,函数会画个周期圆,3等分(以第二参数为标准)                                                               
  注意:划分的时候是以顺时针绝对值增大的方向划分的,划好以后第一参数来转圈圈                                                               
  因为圆的划法是顺时针且绝对值增大划分的,这个时候要看第一参数与第二参数的符号是否相同                                                               
  很显然第一参数2是正数第二参数是负数,所以第一参数背道而驰,从圆的0点出发逆时针走了2步                                                               
  从圆的0点出发逆时针走了2步,很显然落在了圆的-1点位置上,所以MOD(2,-3)的值就是-1                                                               
(2)以MOD(-2,-3)为例,时钟怎么划分呢?跟上面的原理一样,以顺时针绝对值增大的方向划分的,                                                               
  划好以后等第一参数来转圈                                                               
  第一参数一看,自己与第二参数符号相同,所以第一参数-2顺时针从原点走了两步                                                               
  正好落在了时钟的-2上面,所以MOD(-2,-3)的值就是-2                                                               

总结1:周期(时钟的划分)是以第二参数的绝对值来划分的,至于是顺时针还是逆时针这个由你自己想象                                                                        
但是第二参数的符号跟第一参数一样时,就按照时钟划分的方向跑,否则反向跑                                                                        
最终求得的结果的符号一定与第二参数相同                                                                        

探讨1:如果这些参数有小数怎么办呢?                                                                        
excel做的很简单,对他们进行一样的运算,第一参数走多少步算多少(包括小数)                                                                        
探讨2:在VB,跟VBA中就不一样了,那是四舍六入五成双,而且最终的值必定是个整数,不会是小数的                                                                        
而且最终的结果值的符号一定与MOD前面的数值相同,与后面一个无关                                                                        
例如:K MOD L,在VB,VBA中,L不管是负数还是正数,都按照四舍六入五成双的原则舍入11111.jpg
 
22222.jpg
 
2楼
wjc2090742
  1. Sub tt()
  2. MsgBox 15 Mod 2.5
  3. MsgBox 15 Mod 2.6
  4. MsgBox 15 Mod 1.5
  5. End Sub


不是四舍五入,是四舍六入五成双。sql中也是这样。
3楼
xpm130
同意翁版的看法。
mod()对小数的处置是遵从银行家舍入法的:
四舍六入五考虑,五后非零就进一,
五后皆零看奇偶,五前为偶应舍去,
五前为奇要进一。
4楼
亡者天下
学习了,谢谢楼主的分享

同时也感谢三楼,还成了诗句呢!
5楼
LoveJinLee
这跟我目前工作中四舍六入是一样的。
看来银行和计量在这上面是相通的~
6楼
rabbitllu
没有理解,能给解释详细点吗,谢谢

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap