ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 梅州

[分享] 【已总结,在2楼】关于判断相除小数位数的方法

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-7 11:33 | 显示全部楼层
本帖最后由 梅州 于 2021-4-7 11:34 编辑

其实判断两数相除能否除得尽,首先我们借助GCD最大公约数来进行判断,然后用除数除以最大公约数,让其成为被除数与除数约掉公因数后成为互质的最终除数,然后我们只需要判断这个除数是不是只含有公因数2,5即可或者是1。
在这方面的判断上,海版给出了如下的数组构造法进行判断,不复杂,但是较为简洁。
不过当你要加大除数范围时,可能要借助表格来进行判断row跟column的范围,如下图所示,蓝色的区域适合10000以内的除数。
2323.png
附上海版公式:(适合10000以内)
  1. =IF(OR(C3/GCD(B3:C3)=2^ROW($1:$11)*5^COLUMN(A:K)/10),"小数位数为:"&LEN(MID(B3/C3,FIND(".",B3/C3&".")+1,99)),"无限循环小数")
复制代码


TA的精华主题

TA的得分主题

发表于 2021-4-7 11:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 cinlo 于 2021-4-7 11:43 编辑
梅州 发表于 2021-4-7 11:33
其实判断两数相除能否除得尽,首先我们借助GCD最大公约数来进行判断,然后用除数除以最大公约数,让其成为 ...

老师好强大的理论知识!
然后我们只需要判断这个除数是不是只含有公因数2,5即可或者是1。

这个不是很理解!
除数除以最大公约数,再来看商是否是2与5的乘冥的倍数?
其实就是看一个最简真分数,他的分母是不是2与5的乘冥的倍数?如果是,那么就可以被整除,不是就是无限小数!?

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-7 11:56 | 显示全部楼层
本帖最后由 梅州 于 2021-4-7 11:59 编辑
cinlo 发表于 2021-4-7 11:36
老师好强大的理论知识!
然后我们只需要判断这个除数是不是只含有公因数2,5即可或者是1。

是的,互质后看除数即可。
其实,这个非常容易理解。
你除了1,2,5之外,你其它的3,7啊怎么都除不尽的,唯有1,2,5总除得尽,因为后面补0。2跟5乘以5啊,4啊可以补齐。

TA的精华主题

TA的得分主题

发表于 2021-4-7 12:18 | 显示全部楼层
因为精度问题,理论上对于除数小于2^19=524288的情况,EXCEL函数可以算出有限小数小数点后的位数。

=IFERROR("有限小数,小数位数为:"&INT(LOG(C1)/LOG(2))-(INT(LOG(C1)/LOG(2))-IFERROR(LEN(B1/C1)-FIND(".",B1/C1),))^0.5^2,"无限小数")

扩展追问,
1. 能否区分有限循环小数(有理数)和无限循环小数(无理数)?
2. 如果是有限循环小数,能否区分纯循环小数和混循环小数?
3. 如果是有限循环小数,能否算出循环节有几位?并列出循环节?

TA的精华主题

TA的得分主题

发表于 2021-4-7 12:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 丢丢表格 于 2021-4-7 12:31 编辑

暴力法

=IF(LEFT(D3,15)*C3=B3,MAX(,LEN(D3)-FIND(".",D3&".")),"循环小数")

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-7 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
丢丢表格 发表于 2021-4-7 12:29
暴力法

=IF(LEFT(D3,15)*C3=B3,MAX(,LEN(D3)-FIND(".",D3&".")),"循环小数")

丢丢老师这个巧妙呀厉害

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-4-7 13:05 | 显示全部楼层
anonym 发表于 2021-4-7 12:18
因为精度问题,理论上对于除数小于2^19=524288的情况,EXCEL函数可以算出有限小数小数点后的位数。

=IFE ...

太复杂了,vba好办点。

TA的精华主题

TA的得分主题

发表于 2021-4-7 13:10 | 显示全部楼层
丢丢表格 发表于 2021-4-7 12:29
暴力法

=IF(LEFT(D3,15)*C3=B3,MAX(,LEN(D3)-FIND(".",D3&".")),"循环小数")

暴力美学!!!!!!!

TA的精华主题

TA的得分主题

发表于 2021-4-7 18:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
强大,学习了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-25 06:09 , Processed in 0.023802 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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