C语言中浮点类型的比较

C语言中浮点类型的比较

我们都知道C中整型数据在计算机里是以二进制数存储的,但是关于浮点数呢比如float a=125.125计算机将其转化为1111101.001B的二进制数,可是问题在于计算机根本不认识小数点。
历史上计算机科学家们曾提出过多种解决方案,最终获得广泛应用的是IEEE 754标准中的方案,目前最新版的标准IEEE std 754-2008。该标准提出数字系统中的浮点数是对数学中的实数(小数)的近似,同时该标准规定表达浮点数的0、1序列被分为三部分(三个域)
在这里插入图片描述
详细参考 浮点数的大小比较为什么不能用等号?

实际上浮点型数据在计算机中的存储是一种近似存储,例如上面提到的a=125.125,在计算机中只是无限逼近,总有误差小量。
这个误差小量一般认为exp(-6),所以在比较浮点类型的数据时就要考虑这个小量。
Example 两个浮点型数据float m,float n,假设已经有确切值,现比较大小。
包含#include “math.h”,调用里面的fabs()函数,这个函数是用来求浮点型数据的绝对值的。

#include "stdio.h"
#include  "math.h"
int main(void)
{
/*比较两个浮点数大小*/
  float m,n;
  scanf("%f%f",&m,&n);
  if((m>n)&&(fabs(m-n)>1e-6))//满足两个浮点数之差的绝对值大于1e-6,大于成立
  {
    printf("m>n ok");
  }
  else if((m<n)&&(fabs(m-n)>1e-6))//满足两个浮点数之差的绝对值大于1e-6,小于成立
  {
    printf("m<n ok");
  }
  else if(fabs(m-n)<1e-6)//满足两个浮点数之差的绝对值小于1e-6,等于成立
  {
    printf("m==n ok");
  }
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值