首页 > 试题广场 > 下面程序的输出结果是(     
[单选题]
下面程序的输出结果是(      )
#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; 
}


  • 21
  • 22
  • 程序无线循环
  • 运行时崩溃
浮点类型不能精确相等
发表于 2019-08-30 18:43:23 回复(0)

先来看一个简单的例子:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    float a = 1.00000001;
    cout << (a == 1.0) << endl; //1
    return 0;
}

上述代码再gcc编译器编译通过。gcc编译器表示单精度浮点数是以八位表示指数部分的(包括指数的符号),指数部分超过这个范围就不能精确表示一个单精度浮点数。这就说明浮点类型数据是不能精确比较的。

发表于 2019-10-12 11:52:50 回复(0)
浮点类型的数据 比较时可以用和0.1相减小于某个特定的值
发表于 2019-09-17 00:06:46 回复(0)