ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9249|回复: 14

[求助] mod函数的运算过程

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 qian010421 于 2012-6-25 21:18 编辑

    本人是函数新手,现在被这个简单的小学数学给搞糊涂了,还请高手们不要笑话!
    mod是取余函数,比如mod(3,2)=1,就是3被2除的余数是1,没有问题。
    但mod(-4,3)=2这个就引起了我的注意或者说疑惑,我知道,mod函数所得值的符号与除数是一致的,也就是说与“3”的符号一致,这里都是正数没有问题,但这个2又是怎么得来的呢?于是我百度了一下,说mod的值的运算过程是这样的:=除数(整商+1)-被除数,好,按照这个运算过程运算一下:mod(-4,3)=3*(1+1)-4=2,然后2取正值,所以mod(-4,3)=2,嘿嘿,所得正确,用excel2010验算也是正确的,确实结果为2,然后验算了mod(-5,3),根据运算过程:=3*(1+1)-5=1,然后1取正值(因为3为正值),所以mod(-5,3)=1,在excel2010里面验算也是这个结果。看来这个求值得公式是正确的。
好,还有个令人迷惑的:mod(9,4)这个值。根据小学数学知识,其余数等于1,这个没有问题,用excel2010验算也是这个结果,但是用上面那个运算过程检验一下:=4*(2+1)-9=3,然后取除数的符号正值,所得结果为+3,那么显然不对!

    按照我对好几个结果的综合理解,结果看是不是这样得出来的:先以mod(-4,3)为例,-4除以3余数为-1,然后-1加上3,于是结果为+2,然后以mod(-9,4)为例,-9除以4余数为-1,然后-1加上4,于是结果为+3,然后以mod(-7,4)为例,-7除以4余数为-3,然后-3加上4,结果为+1;最后以mod(-7,-4)为例,-7除以-4余数为3,然后3加上-4,于是结果为+1。我上面这4个例子在excel2010里面验算均正确。当然,这是除数与被除数符号中有负值的演算过程,对于都是正值的情况就按小学数学来进行基本的判断了,就不需要再用余数加上除数了!
    所以,现在我想求助于各位高手、老师,mod函数的运算过程究竟是怎么样的?或者是不是我对那个求值公式(=除数(整商+1)-被除数)的理解上出了什么问题?还是说这个求值公式本身就是错的?

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:15 | 显示全部楼层
看看图吧,我知道怎么解释。实列。
1.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-25 21:23 | 显示全部楼层
谢谢楼上的解答,本人脑子比较笨,还是没有看出所以然来!

TA的精华主题

TA的得分主题

发表于 2012-6-25 21:45 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-25 22:36 | 显示全部楼层
看了楼上提供的这个帖子,对mod的理解又加深了一层了,现在基本可以算出结果了,但对其运算过程没有一个统一的认识。谢谢楼上两位的热心帮助!

TA的精华主题

TA的得分主题

发表于 2012-6-25 23:22 | 显示全部楼层
楼主,好像有个公式你弄错了,MOD(-7,-4)=-3不是+1,你再算一下

TA的精华主题

TA的得分主题

发表于 2012-6-26 00:34 | 显示全部楼层
我想了一下,可以这样理解这个函数:
分四种情况:
1)除数是正数,被除数是正数
2)除数是正数,被除数是复数
3)除数是负数,被除数是正数
4)除数是负数,被除数是负数
先要理解除数与被除数的正负的意义:想象一个横向坐标,单位长度为1
被除数的长度单位表示其所代表的点离0坐标的单位距离长度,而其正负表示偏移方向(左或者右),如mod(9,4)中9表示向右9个单位长度,mod(-9,4)中-9表示向左9个单位长度;
除数的长度单位表示以该数代表的单位长度个数为一组,如除数=4表示以4个单元格为一组,正号表示向右以4个为一个单位分被除数,符号表示向左以4个为一个单位分被除数
1)        以mod(9,4)=1为例,向右9个单元长度,4个为一组,则可分2组,之后只需再向右偏移一个单元长度则可到达9个长度
2)        以mod(-9,4)=3为例,被除数为负数表示向左偏移的9个单元长度,4个为一组,这里的问题是要分为2个还是3个整组。整个有除数的正负号决定。由于这里除数为4表示组成整数组后向右偏移,则选择组成3个整组,在-4*3=-12上,再向右偏移3个单位长度到-9
3)        以mod(9,-4)=-3为例,向右9单位长度,同样4个为一组分为3组后(而不是2个整组因为除数为负数表示右整组想左偏移到达被除数表示的坐标点),再向左偏移3个单位长度到达9
4)        同理mod(-9,-4)=-1
总结一下:
1)        所得结果与除数的正负号一样
2)        除数的正负号表示向左还是向右偏移组成组
3)        结果的正负号表示组成整数的组后还剩下的偏移量
用这种理解方法我觉得可以理解了mod方程的答案。如果我的思路不对的话望指正

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-26 00:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ppluwendy 发表于 2012-6-25 23:22
楼主,好像有个公式你弄错了,MOD(-7,-4)=-3不是+1,你再算一下

嗯,谢谢提醒,我算错了。应该是-7与-4的整商为1,1加上-4,结果为-3,。谢谢提醒!

TA的精华主题

TA的得分主题

发表于 2012-7-30 23:04 | 显示全部楼层
因为余值是必须和除数同号的,
所以可以这样理解,当除数为正时,选比被除数小的最大值作为完全除尽的值;
当除数为负时,选比被除数大的最小值为完全除尽的值;
如Mod(-7,4),选比-7小的最大为除尽值-8,余1,
Mod(7,-4),选比7大的最小值8,余-1,
mod(-7,-4),选比-7大的最小值-4,余-3

TA的精华主题

TA的得分主题

发表于 2015-7-19 14:30 | 显示全部楼层
ppluwendy 发表于 2012-6-26 00:34
我想了一下,可以这样理解这个函数:
分四种情况:
1)除数是正数,被除数是正数

思路挺好的  
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-12 03:27 , Processed in 0.036560 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表