为了清楚起见,如果我使用的是实现IEE 754浮点数的语言,则我声明:
float f0 = 0.f;
float f1 = 1.f;
...然后将它们打印出来,我将得到0.0000和1.0000-准确。
但是,IEEE 754不能表示真实数字中的所有数字。接近零,“间隙”很小;随着距离的增加,差距会越来越大。
因此,我的问题是:对于IEEE 754浮点数,它是无法精确表示的第一个(最接近零)整数吗?我现在只真正关心32位浮点数,尽管如果有人给我64位的答案,我将很感兴趣!
我认为这很简单,只需计算2个bits_of_mantissa并加1,其中bits_of_mantissa是标准公开的位数。我是在我的机器(MSVC ++,Win64)上针对32位浮点数执行此操作的,但看起来还不错。
如果要一个无法代表的数字,为什么还要加一个?您使用或获得了多少电话?这是家庭作业吗?您的问题标题为“整数”,但您的问题为“ float”。
—
msw
因为我认为最大尾数会给我最大的可表示数字。2 ^ 22。不,这是一个好奇心问题。即使我知道有问题的int总是很小,我也总是感到内gui。我想知道上限是多少。据我所知,标题和问题是相同的,只是措辞不同。
—
Floomi
@KyleStrand已还原^ 2。我不知道为什么一个人对我来说比当时更正确。现在,与“…是位数…”相比,它们看起来都很尴尬
—
Pascal Cuoq