这个mod函数的使用方法公式是什么意思?

MOD函数第二个参数是小数和负数的,会因为浮点运算产生误差

原因:这是由于浮点运算造成的。(在微软官方有详细说明的)

目前计算机上存储浮点数值是按照IEEE(电气和电子工程师协会)754浮点存储格式标准来存储的。IEEE单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。其中0:22位包含23位的小数f; 23:30位包含8位指数e;第31位包含符号s。也就是说上面将0.65及0.5转换出的二进制代码,我们只能存储23位,即使数据类型为double,也只能存储52位,这样大家便能看出问题出现的原因了。

截取的二进制代码已无法正确表示0.65及0.5,根据这个二进制代码肯定无法正确得到结果0.05。

在Excel进行计算时在计算机中是转换成二进制进算然后保留数值的,所以会出现误差。

但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)-被除数)的理解上出了什么问题?还是说这个求值公式本身就是错的?

装备可以直接放到盒子里合成暗金。。。刚开始玩感觉不错,发现这公式以后就放弃了


我要回帖

更多关于 mod函数的使用方法 的文章

 

随机推荐