最佳答案
为了清晰起见,如果我正在使用实现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位浮点数做了这个操作,尽管它看起来很好。