是否存在无法在十进制下精确表示的二进制数值?
我们都知道部分十进制数值无法在二进制下获得精确表示。
例如十进制数值0.1。
在IEEE浮点数格式中,根据为浮点数分配的比特位数量不同,它会存在多种表示形式:
单精度(32位)
- 十六进制:0x3DCCCCCD
- 二进制:1.10011001100110011001101×10⁻⁴
- 十进制:0.10000 00014 90116 11938 47656 25
双精度(64位)
- 十六进制:0x3FB999999999999A
- 二进制:1.1001100110011001100110011001100110011001100110011010×10⁻⁴
- 十进制:0.10000 00000 00000 00555 11151 23125 78270 21181 58340 45410 15625
扩展精度(80位)
- 十六进制:0x3FFBCCCCCCCCCCCCCCCD
- 二进制:1.100110011001100110011001100110011001100110011001100110011001101×10⁻⁴
- 十进制:0.10000 00000 00000 00000 13552 52715 60688 05425 09316 00108 74271 39282 22656 25
也就是说,十进制值0.1没有精确的二进制表示,它是无限循环的二进制值:
0.0 0011 0011 0011 0011 0011 0011 0011 0011 ... 0.0 ̅0̅0̅1̅1
同理,1⁄3在十进制下也没有精确表示,*“小数点”*后的数字会无限循环:
0.33333 33333 33333 33333 33333 33333 33333 ... 0.̅3
反过来是否成立?
是否存在无法在十进制下获得精确表示的二进制数值?提出该问题旨在拓展认知边界,丰富相关领域的知识储备。
编辑说明:不清楚为什么有人投票将该问题标记为重复,关联的问题与本问题方向完全相反。
内容的提问来源于stack exchange,提问作者Ian Boyd
相关产品推荐
相关产品推荐

