题目二
下面的程序运行结果是什么?“!=”运算符表示“不相等”。提升:请上机实验,不要凭主观感觉回答。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1f\n",i);
return 0;
}
程序不会在100累加的时候停止,原因在于i!=10这一语句
i是浮点数,采用二进制科学计数法来储存,绝大多数在计算机中是不能精确表示的
当两个浮点数都是由赋值得到的,如
a=3.3;
b=3.3;
则a==b值为真。
而当a,b中至少有一个为经由运算得到,那么由于其精确度的原因,会出现这样的情况
a=1.7+2.7;
b=4.4;
则a==b的值就不一定为真了
若想进行粗略的比较,则可用
fabs(a-b)<1e-6
floor(b+0.5)==floor(a+0.5)
等限制误差的语句