#include <stdio.h> int main() { int i, n = 0; float x = 1, y1 = 2.1 / 1.9, y2 = 1.9 / 2.1; for ( i = 1; i < 22; i++) x = x * y1; while ( x != 1.0 ) { x = x * y2; n++; } printf( "%d\n", n ); return 0; }
#include <iostream> #include <cstdio> using namespace std; int main() { float a = 1.00000001; cout << (a == 1.0) << endl; //1 return 0; }
上述代码再gcc编译器编译通过。gcc编译器表示单精度浮点数是以八位表示指数部分的(包括指数的符号),指数部分超过这个范围就不能精确表示一个单精度浮点数。这就说明浮点类型数据是不能精确比较的。