乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel文件修复-Excel基础知识-微软都无法修复MOD中的BUG,我们该怎么做

excel文件修复-Excel基础知识-微软都无法修复MOD中的BUG,我们该怎么做

作者:乔山办公网日期:

返回目录:excel表格制作

有句名言说的好,音乐能激发或抚慰情怀,绘画使人赏心悦目,诗歌能动人心弦,哲学使人获得智慧,科学可改善物质生活,但数学能给予以上的一切。在Excel世界里,更是离不开数学和计算,之前我们了解了四则运算和四则运算的函数部分,今天我们就来看看存在计算中处理数据的函数有哪些?他们都能解决什么样的问题?带着这些疑问开始我们对这些函数的了解吧!


MOD函数


取余:返回2参数相除,返回余数,函数使用结构图如下:


MOD函数语法结构图


​这里解释一下进制数的概念,进制就是进位计数制,这里主要使用的概念是比如X为进制数,则产生的数字最大为X-1,若X为负数,则最大的X+1;数字都是从0开始,知道这个原理,我们就可以用MOD函数创建一些有意思的数列,比如循环序列:0,1,2,3,4,5,0,1,2,3,4;0-12序列;也可以创建比如日期时间的等月份,日期,分,秒,小时等循环序列;


MOD函数各类数据类型的数据测试图


当然这里进制数并没有严格的要求,也不是像我们常用的2进制,8进制,16进制这几种,但它也有不可能触碰的禁区就是0,如果进制数为0,返回#DIV/0,还有2个没有意义的值1或-1,不论数字是什么,返回都是0;不光有负数,还可以包括小数,这里总计了一下MOD函数不同情况的规律:


当X为负数时,它的取值范围:X+1,...,0;


MOD(N,-3),N从-2开始依次增1,转化结果依次为:-2,-1,0,-2,-1,0,-2,-1


当X为整数时,则的它的取值范围:0,1,... X-1; 注:进制数的正负决定序列是正数还是负数


当X=2时,N从0开始依次增1,则它的取值范围:0,1,0,1,我们经常用它来判断是奇数还是偶数,不过Excel也提供了检测ISEVEN(检测是不是偶数)和ISODD(检测是不是奇数),两个函数都只有一个参数,返回的结果都为逻辑值TRUE和FALSE;当然它们也属于互逆函数,同一个参数,一个结果为TRUE,另一个结果一定为FALSE,不过这个并不是今天的主要内容,哪我们还是继续来看MOD函数当参数为小数的情况吧!


当MOD函数遇到非整数的有三种情况,常量,文本常量和表达式结果,常量或文本常量的情况都不会出现异常的情况,不过恰恰这两种情况我们都不太常用,通过表达式生成的数字再取余是工作中常用的模式,在使用中发现的MOD函数的小BUG,我们来一起看一下这个引起BUG的案例公式=MOD(9.96*100,0.02*100)按理论上它的结果为0,结果却是1.13687E-13,不过的同样异常还有几组数,可见下表:


MOD函数BUG数据图例


我也查了相关的资料,应该是Excel在计算带小数的整数也叫浮点数,存在精度的上的问题,我们从数据上可以看出的运算结果误差很小很小,都可以忽略不计,但是我们在工作这种误差却不允许的,一旦这种误差带入多层运算中的,就会放大数倍,而且原因及其隐蔽,所有我们就需要每个接的阶段尽量减少这种误差。


解决方法:我们本来的目的是为了检测带有小数的整数是不是奇数或偶数(符合整数的奇偶规则),例子中的9.96和0.02并非死数,为了说明才具体实化;哪我们要做只需屏蔽这些误差或者抹掉末尾极小数,我们可以取整或四舍五入法,这也是我们接下来要聊的内容。


取整函数


在Excel中取整函数有两个,INT和TRUNC函数,先了解一下它俩的使用语法结构:


INT函数和TRUNC函数的语法结构图


​TRUNC函数更像是INT函数增强版,TRUNC函数增加的一个参数就比INT更加灵活,比如我们想要取整的数字保留一位小数,但并没有加入四舍五入的规则,直接简单的截取,相比较的而言,INT就比较麻烦,需要通过数学的计算来完成,比如数字8.345取整并保留一位小数,公式编写:


TRUNC函数:=trunc(8.345,1);


INT函数:=int(8.345*10)/10;


为了更好的掌握之前的文本函数,我们就用文本函数来实现以下TRUNC默认第2参数为0和INT功能:


INT文本函数版=LEFT(8.345,FIND(".",8.345)-1)+0


或=REPLACE(8.345,FIND(".",8.345),LEN(8.345)-FIND(".",8.345)+1,"")+0


第二参数为2的情况下的文本函数:=left(8.345,find(".",8.345)+2)+0


或:=REPLACE(8.345,FIND(".",8.345)+3,LEN(8.345)-FIND(".",8.345)+2,"")+0


用文本函数做有个好处,就是不会出现数字计算的浮点数的问题,当然为了让结果为数字,我们最后通过+0来实现文本数字转化成数字,想了解详情可以翻看之前的文章:Excel基础知识-文本数字和数字互换之谜


最后我们就可以通过INT函数或TRUNC函数修复一下MOD的终极BUG,公式:=mod(int(9,96*100),int(0.02*100)),这样调整后,就不会出现文中的说的那种异样,其实像浮点数计算出现精度的问题,并不是Excel的专利,甚至在各种编程语言的也都有类似的情况出现,我们并不能从根源上修复,只能尽量创造条件不去触发就可以了!


今天关于数字的计算的部分函数就说这了,也希望你看到文章,如果有所收获,也希望你多多使用,只有用的多了,才能变成自己的,熟能生巧,再有逻辑思想的加持,你就能做的更好了。只有更好的自己,才能让你变的更有价值,也更值钱。希望屏幕的前的你别让无聊的浪费了你的美好年华,也欢迎你把你遇到的生活的问题给我留言,在你学习和工作路上,我们结伴而行!


相关阅读

  • word临时文件-如何在word中插入excel文件

  • 乔山办公网word文档
  • word和excel软件都是微软旗下的文档编辑软件,其作用几乎渗透于社会中的大部分人们的生活和工作,此外,它们之内的文件还可以相互插入,但许多人都还不能掌握绝大部分功能。-wor
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网