众所周知,数据在计算机中的存储都是以二进制存储的,整数都可以转化为二进制的形式,
可以完美转化,不损失精度。那么分数呢?是怎么存储的呢?答案肯定不是完美存储,是有部分
精度损失的,近似存储的。例如整形数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 ",i);
}
return 0;
}