判断浮点数是否相等

题目二

下面的程序运行结果是什么?“!=”运算符表示“不相等”。提升:请上机实验,不要凭主观感觉回答。

#include 
#include 
#include 


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)
等限制误差的语句

你可能感兴趣的:(算法竞赛入门经典-第2版)