如何将此二进制数舍入到最接近的偶数

时间:2016-05-09 08:47:34

标签: binary floating-point rounding

我有0.1的二进制表示形式:

0.00011001100110011001100110011001100110011001100110011001100110

我需要将它舍入到最近,甚至能够将它存储在双精度浮点中。我似乎无法理解如何做到这一点。大多数教程都讨论了保护,圆形和粘性位 - 它们在这个表示中的位置在哪里?

我也找到了以下解释:

  

让我们看看0.1在双精度中是什么样的。首先,让我们写一下   它以二进制形式,截断为57位有效位:

0.000110011001100110011001100110011001100110011001100110011001…
  

54位及以上总计大于位值的一半   第53位,所以这个结束了

0.0001100110011001100110011001100110011001100110011001101

这个没有谈论GRS位,为什么? Aren他们总是需要吗?

1 个答案:

答案 0 :(得分:1)

您引用的文字来自我的文章Why 0.1 Does Not Exist In Floating-Point。在那篇文章中,我将展示如何手动进行转换,“GRS”位是IEEE实现细节。即使您使用计算机进行转换,也不必使用IEEE算法(and you shouldn't if you want to do it correctly),因此GRS位也不会在那里发挥作用。在任何情况下,GRS位都适用于计算,而不是转换的概念。