ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 余数MOD的问题!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-8 23:37 | 显示全部楼层
CheryBTL 发表于 2013-1-8 23:24
确实是呀,楼主发现了一个我们都认为是不可能的事儿,学习下
建议向上取整后再求余:

刚刚才发现自己傻了,把数学全都丢给老师了,忽然想起余数是只定义在整数里的。

TA的精华主题

TA的得分主题

发表于 2013-1-8 23:51 | 显示全部楼层
本帖最后由 CheryBTL 于 2013-1-8 23:51 编辑
okhappy 发表于 2013-1-8 23:37
刚刚才发现自己傻了,把数学全都丢给老师了,忽然想起余数是只定义在整数里的。

简单做了验证附件,
当MOD第二参数为整数时,返回正确结果。
当MOD第二参数为0.01~0.41时,返回的结果并不定与想像中的结果一样(有相同,有不同),详见附件。
不知道Excel中对于MOD函数第二参数为小数的运算机理,只能在使用时注意此问题,并加以避免。
欢迎其他前辈指点。

MOD函数第二参数为整数与小于1的小数的验证.rar (11.68 KB, 下载次数: 16)

TA的精华主题

TA的得分主题

发表于 2013-1-8 23:56 | 显示全部楼层
本帖最后由 苍破 于 2013-1-8 23:59 编辑
CheryBTL 发表于 2013-1-8 23:51
简单做了验证附件,
当MOD第二参数为整数时,返回正确结果。
当MOD第二参数为0.01~0.41时,返回的结果并 ...


零点几的小数时
能除尽返回除数本身
除不尽的返回余数

TA的精华主题

TA的得分主题

发表于 2013-1-9 00:10 | 显示全部楼层
打开你的附件结果是0.002,再按一下ENTER后结果是-2.56045185054177E-15

TA的精华主题

TA的得分主题

发表于 2013-1-9 07:57 | 显示全部楼层
yfan17 发表于 2013-1-9 00:10
打开你的附件结果是0.002,再按一下ENTER后结果是-2.56045185054177E-15

大版用2010版打开看看?
我在公司用2007版打开,确认如版主所说。
但家里的10版好像不是这样的,应该回车过几次了。

TA的精华主题

TA的得分主题

发表于 2013-1-9 13:41 | 显示全部楼层
我想是浮点误差的原因。
我机器上,
=MOD(A1,0.002)=-2.56045185054177E-15
这说明存在浮点误差。
至于为何是 0.002 ,可能版本问题估计是 0.002+(-2.56045185054177E-15) 约等于 0.002

TA的精华主题

TA的得分主题

发表于 2013-1-9 13:43 | 显示全部楼层
CheryBTL 发表于 2013-1-9 07:57
大版用2010版打开看看?
我在公司用2007版打开,确认如版主所说。
但家里的10版好像不是这样的,应该回 ...

如果2010版,试一下 ROUND(MOD(2,0.002),15)

点评

谢谢头版指点,晚上回家测试下  发表于 2013-1-9 14:02

TA的精华主题

TA的得分主题

发表于 2013-1-9 13:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
未命名222.jpg

B1、B2 分别是A1、A2 公式显示的结果 (增加小数位数到 30)

TA的精华主题

TA的得分主题

发表于 2013-1-9 13:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wangg913 于 2013-1-9 13:53 编辑

看看截图。。
2013-1-9 13-45-56.png

整好等于 =0.002+-2.56045185054177E-15

不出意外,MOD(X,0.002),如果X为其他整数,可能出现余数为其他正小数浮点误差。
即余数是两种情况:
1、正浮点误差
2、0.002+负误差

TA的精华主题

TA的得分主题

发表于 2013-1-9 22:11 | 显示全部楼层
wangg913 发表于 2013-1-9 13:43
如果2010版,试一下 ROUND(MOD(2,0.002),15)

头版请看
用MOD(2,0.002)和ROUND(MOD(2,0.002),15)结果都是0.002本身。

1.jpg

点评

17楼说的不对,参照我19楼。  发表于 2013-1-10 10:11
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-6-17 20:48 , Processed in 0.048356 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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