为什么0.1无法被二进制小数精确表示?
这个问题困扰了我不少时间,最近有个比较清晰的认识,和大家分享。
这个问题首先要从数位表示法说起。今天我们看到的 123 这样的十进制数,是自然而然的理解其意义,但是有没有深究其内在的数学原理呢?
所谓十进制是
位置,进制,符号这三者的关系就是“123”这种数字表示法内在的数学原理。
那么,0.1 是什么意思?是
一个数要用“数位表示法”表示出来,必然需要能够化为
究竟哪些数可以用十进制表示哪些不可以?如分母是 10 的因子和因子的合数,如 1,2,5,10,20,50 等(整数分母为 1,而任意大于 1 的数的因子都有 1 和自身,因此整数可以用任意数制精确表示)。
回答题目,为什么 0.1 无法被二进制小数表示,0.1 即
右移5位
商1
右移1位
商1
右移3位
商1 可见数字重复了,循环小数无疑
即 0.00011001。
那么 2 进制能够表示哪些十进制小数,
总结一点,就是位置表示法有其自身的缺陷,并不能在有限的数位,表示众多有理数,这个时候,需要借助分数来帮忙,来避免位置表示法以固定数作分母这个缺点。
如果需要一个可以避免循环小数的数制,不妨试用210进制,因为因子比较多,
补充 2023-07-12:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)