1. 为什么 0.1 用二进制无法精确表示,而 0.5 可以?用位权分解说明两者差异?
请解释为什么十进制小数 0.1 在二进制中无法被精确表示,而 0.5 却可以精确表示,并用位权分解说明两者的差异?
- 二进制小数的位权概念(2^-1、2^-2 …)
- 有限二进制小数对分母的约束条件
- 最简分数分母仅含 2 的因子即可有限表示
二进制小数的每一位代表 2^-n 的位权,因此一个数能被有限二进制精确表示,当且仅当它等于若干 2 的负幂之和。0.5 = 1 × 2^-1,正好是最高位的一位权,可以精确表示为 0.1。而 0.1 需要分解成 2^-1=0.5、2^-2=0.25、2^-3=0.125、2^-4=0.0625 等有限项的组合,但无论取多少位,剩余部分都无法完全消去,只能无限逼近,得到无限循环的二进制小数 0.0001100110011…。
判断依据是:一个数能写成有限二进制小数的充要条件是它化为最简分数后分母只含 2 的因子。0.5 = 1/2 分母只有 2,可以终止;0.1 = 1/10,分母含因子 5,无法用 2 的幂次表出,故只能无限循环。这正是浮点数无法精确表示 0.1 的根本原因。