Ton*_*ark 6 c floating-point rounding
我试图理解浮点数是如何工作的.
我想,我想测试一下我所知道的/需要通过评估以下内容,了解:我想找到的最小x这样x + 1 = x,哪里x是一个浮点数.
据我了解,这种情况会发生在x足够大的情况下,以便x + 1比下一个比浮点可表示的数字更高的数字更接近x.如此直观地看起来就是我在有效数字中没有足够数字的情况.这个数字x是否是有效数字为1的数字.但后来我似乎无法弄清楚指数必须是什么.显然它必须很大(相对于10 ^ 0,无论如何).
你只需要用指数表示尾数中LS位的值.当这个> 1时,你就达到了你的条件.对于单精度浮点数,LS位的值为2 ^ -24*2 ^ exp,因此当exp> 24时我将满足条件,即25.满足此条件的最小(标准化)数将因此是1.0*2 ^ 25 = 33554432.0f.
我没有检查过这个,所以我的数学可能会偏离某个地方(例如2倍),并且FP单元也可能会超出第24位,因此可能还需要2倍的因子来计算这个,但你得到了一般的想法......