Returns the exponent of a floating-point number as an integer #include <math.h> int ilogb ( double x ) int ilogbf ( float x ) int ilogbl ( long double x ) The ilogb( ) functions return the exponent of their floating-point argument as a signed integer. If the argument is not normalized, ilogb( ) returns the exponent of its normalized value. If the argument is 0, ilogb( ) returns the value of the macro FP_ILOGB0 (defined in math.h), and may incur a range error. If the argument is infinite, the return value is equal to INT_MAX. If the floating-point argument is NaN ("not a number"), ilogb( ) returns the value of the macro FP_ILOGBNAN. Exampleint exponent = 0; double x = -1.509812734e200; while ( exponent < INT_MAX ) { exponent = ilogb( x ); printf( "The exponent of %g is %d.\n", x, exponent ); if ( x < 0.0 && x * x > 1.0 ) x /= 1e34; else x += 1.1, x *= 2.2e34 ; } This code produces some 15 output lines, including these samples: The exponent of -1.50981e+200 is 664. The exponent of -1.50981e+30 is 100. The exponent of -0.000150981 is -13. The exponent of 2.41967e+34 is 114. The exponent of inf is 2147483647. See Alsologb( ), log( ), log10( ), log1p( ), exp( ), pow( ). |