我的 IEEE 754 浮点表示有什么问题?

What is wrong with my IEEE 754 floating point representation?

我在作业中被要求在 IEEE 754 表示法中表示小数点 0.1。以下是我执行的步骤:

然而在线转换器,这answer on stack exchange建议否则。他们提出了这个解决方案:

s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
0 01111011 10011001100110011001101

不同的是右边的数字1。为什么不是1100,为什么是1101?

正如 njuffa 在评论中所说,四舍五入是对您看到的差异的解释。转换器通常会根据您输入的十进制数生成 最近的 浮点值。IEEE 754 标准建议在从一个基数到另一个基数的转换中考虑舍入模式(例如从十进制到二进制),默认舍入方式是“最接近”。

最接近1/10的两个单精度浮点数是1.10011001100110011001100×2-4和1.10011001100110011001101×2-4(低于和高于 1/10)。 被截掉的数字是“11001100...”,表示实数的1/10更接近上界而不是下界(如果剩下的数字是“100000000...”,则实数正好在-两者之间)。为此,舍入取整时选择1.10011001100110011001101×2-4作为1/10到binary32的转换