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