Generate next largest or smallest representable floating point number without bit twiddling

后端 未结 2 1993
执笔经年
执笔经年 2020-12-09 17:01

Given an arbitrary finite floating point number, is there a way to determine what the next representable floating point number? For example, given 1.0f, by definition the ne

2条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-09 17:28

    int exponent;
    significand= frexp(number, &exponent);
    significand+= epsilon;
    next= ldexp(significand, exponent);
    

    What this does is extract the mantissa, increment it by the floating point epsilon, then rebuild the floating point number. That should be the next representable number you would get by fiddling with the bits of the mantissa (and exponent on mantissa overflow).

提交回复
热议问题