//p27.c -- @CopyLeft by tsaiwn@csie.nctu.edu.tw // demo the Limition of float in C Language, again // Floating underflow 實數虧失 ! 實數絕對值太小會被當作 0 // IEEE754/854 document ////// /* s eeeeeee efffffff gggggggg hhhhhhhh */ /* +/- 1.fffffffgggggggghhhhhhhh * 2 **(eeeeeeee - 127) */ /* eeeeeeee: Exponent base 2 excess 127 */ #include #define DLOOP 146 int main( ) { int k; float ans = 1.0; for(k=1; k<= DLOOP; ++k) ans = ans/2.0; /* ans = pow(2, -146);*/ for(k=1; k<= 7; ++k){ printf("= %12.8g\n", ans ); ans /= 2.0; } printf("Hit RETURN key..."); getchar( ); return 0; } /****** C:\test2> gcc p27.c C:\test2> a.exe = 1.1210388e-044 = 5.6051939e-045 = 2.8025969e-045 = 1.4012985e-045 = 0 = 0 = 0 Hit RETURN key... C:\test2> ********************/