首页 文章

舍入到最近的低级实现

提问于
浏览
0

我有一些低级问题:
让's assume we'得到十进制数0.1(我们可以通过写1/10来表示这一点 - 但这不是解决方案) . 转换为二进制数,这给我们0,00011,最后4位无限重复(0,0001100110011 ....) .

所以现在假设我们想把这个数字放到浮点表示中,例如IEEE 754单精度,我们希望将它舍入到最接近的可能表示,这给了我们
1 0111 1110 0101 0101 0101 0101 0101 011
(fyi:如果我们简单地截断,最后一位应该是0而不是1)

现在,我的问题是:如何在软件中实现这一目标?毕竟我们不能简单地使用一些
X =((x_floor-0.1)<(x_ceil-0.1))x_floor:x_ceil;
因为这意味着我的问题的核心是"perfect" 0.1 . 有任何想法吗?

1 回答

  • 0

    我想我已经对自己的问题得到了一些答案:您可以通过检查以下对话来决定 . 如果它被设置,你可以舍入到ceil,因为查看下面的例子:我们想要在点之后将二进制数0.1001舍入到3位数 . 如果我们将它舍入到0.100,我们将产生0,0001的错误以及将它舍入到0,101的情况 .

    但更有意思的是:如果要舍入的数字是0,1001 ... 1 - 如果我们舍入到0.100,那么我们将犯的错误将大于在任何情况下舍入到0.101时的错误!对于实际会话之后的未设置位的情况,可以以类似的方式完成该“证明”

相关问题