Floating point 四舍五入到最近的低级别实施

Floating point 四舍五入到最近的低级别实施,floating-point,ieee-754,rounding,Floating Point,Ieee 754,Rounding,我有一些低级问题: 让我们假设我们得到了十进制数0.1(我们可以通过写1/10来非常精确地表示这一点,但这不是一个解决方案)。转换成一个二进制数,这给我们 000011,最后4位无限重复(000011011011…) 现在假设我们想把这个数字转换成浮点表示法,例如IEEE 754单精度,我们想对它进行四舍五入,以得到最接近的可能表示法,这给了我们 10111 1110 0101 0101 0101 0101 0101 011 (仅供参考:如果我们简单地截断,最后一个数字应该是0而不是1) 现在,

我有一些低级问题:
让我们假设我们得到了十进制数0.1(我们可以通过写1/10来非常精确地表示这一点,但这不是一个解决方案)。转换成一个二进制数,这给我们 000011,最后4位无限重复(000011011011…)

现在假设我们想把这个数字转换成浮点表示法,例如IEEE 754单精度,我们想对它进行四舍五入,以得到最接近的可能表示法,这给了我们
10111 1110 0101 0101 0101 0101 0101 011
(仅供参考:如果我们简单地截断,最后一个数字应该是0而不是1)

现在,我的问题是:如何在软件中实现这一点?毕竟,我们不能简单地使用一些

x=((x_层-0.1)我想我对我自己的问题有了一些答案:你可以通过检查下面的对话来决定。如果设置了,你可以舍入到ceil,因为查看下面的示例:我们想将二进制数0.1001舍入到点后的3位。如果我们将其舍入到0.100,我们将产生00001的错误以及cas中的错误我们把它四舍五入到0101

但更有趣的是:如果四舍五入的数字是01001…1-如果我们四舍五入到0.100,我们将产生的误差将大于任何情况下四舍五入到0.101时的误差!对于实际对话后未设置位的情况,这种“证明”可以用类似的方式完成