我有 0.1
的二进制表示:
0.00011001100110011001100110011001100110011001100110011001100110
我需要将它舍入到最近,甚至能够将它存储在双精度浮点中 . 我似乎无法理解如何做到这一点 . 大多数教程都谈论了防护,圆形和粘性位 - 它们在这个表示中的位置是什么?
我也找到了以下解释:
让我们看看0.1在双精度中看起来像什么 . 首先,让我们用二进制写它,截断到57位有效位:
0.000110011001100110011001100110011001100110011001100110011001…
比特位置53的值大于等于54的位数,因此这将达到
0.0001100110011001100110011001100110011001100110011001101
这个没有谈论GRS位,为什么?他们不总是需要吗?
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位都适用于计算,而不是转换的概念 .