浮点数相比较

众所周知,数据在计算机中的存储都是以二进制存储的,整数都可以转化为二进制的形式,

可以完美转化,不损失精度。那么分数呢?是怎么存储的呢?答案肯定不是完美存储,是有部分

精度损失的,近似存储的。例如整形数8和浮点数8.0是不一样的,有微小的差别,一般进行运算时

不会体现出来,但如果需要大量计算时就会发生错误。故进行浮点数比较时不能够进行完全相等的

比较,因为他们在计算机存储时本身就不是完全相同的,应该使用大于等于和小于等于。

例如:

啤酒每罐 2.3 元,饮料每罐 1.9 元。小明买了若干啤酒和饮料,一共花了 82.3

元,我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

#include<stdio.h>

int main(void)

{

for(int i=1;i*2.3<82.3;i++)

for(int j=i+1;i*2.3+j*1.9<=82.3;j++)//因为 i 比 j 小,所以 j 从 i+1 开始

{

if(i*2.3+j*1.9>=82.3-0.000001&&i*2.3+j*1.9<=82.3+0.000001) //浮点数相比较

//不可写成if(i*2.3+j*1.9==82.3)

printf("%d\n",i);

}

return 0;

}

posted @ 2019-03-19 20:22  月为暮  阅读(325)  评论(0编辑  收藏  举报