【发布时间】:2011-04-17 04:03:02
【问题描述】:
为了清楚起见,如果我使用的是实现 IEE 754 浮点数的语言并声明:
float f0 = 0.f;
float f1 = 1.f;
...然后将它们打印出来,我会得到 0.0000 和 1.0000 - 完全正确。
但是 IEEE 754 不能代表实线中的所有数字。接近于零,“差距”很小;距离越远,差距越大。
所以,我的问题是:对于 IEEE 754 浮点数,它是第一个(最接近于零)无法精确表示的整数?我只关心 32 位浮点数现在,尽管如果有人给出 64 位的答案,我会很感兴趣!
我认为这就像计算 2bits_of_mantissa 并加 1 一样简单,其中 bits_of_mantissa 是标准公开的位数。我在我的机器(MSVC++,Win64)上为 32 位浮点数做了这个,不过看起来还不错。
【问题讨论】:
-
如果您想要一个无法代表的数字,为什么要添加一个?您使用或获得了什么号码?这是作业吗?你的问题标题是“integer”,但你的问题是“float”。
-
因为我认为最大化尾数会给我最大的可表示数字。 2^22。不,这是一个好奇的问题。即使我知道所讨论的 int 总是非常小,我也一直对将 int 放入浮点数感到内疚。我想知道上限是多少。据我所知,标题和问题是相同的,只是措辞不同。
-
@KyleStrand 已恢复^2。我不知道为什么当时一个对我来说似乎比另一个更正确。现在,与“……是位数……”相比,它们都显得很尴尬
标签: types floating-point ieee-754