浮点数相比较

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

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

精度损失的,近似存储的。例如整形数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;

}

转载于:https://www.cnblogs.com/cong12586/p/10561057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值