浮点型和零的比较

浮点型变量和零的比较:因为浮点数在内存的存储方式使得,有些浮点数在内存中无法精确的存储,
这样就必然有精度的缺失,一旦丢失就可能计算不够准确。无法用==直接判断两个浮点数相等。
不能直接比较,需要设置一个0的精度范围
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define EXP 0.0000000001//设置0的精度
int main()
{
float a = 1.0;
if (a >= -EXP&&a <= EXP)//判断a是否在0的精度范围内
就意味着a是无限接近0的数字,就约等于0。
printf("yes\n");
else
printf("no\n");
system("pause");
return 0;
}


计算一元二次方程组根
int main()
{
float a = 0.0;
float b = 0.0;
float c = 0.0;
printf("请输入a b c 的值:\n");
scanf("%f%f%f", &a, &b, &c);
if (a >= -EXP&&a <= EXP)
printf("不是一元二次方程!\n");
else
{
float d = 0.0;
d = b*b - 4 * a*c;


if (d >= -EXP&&d <= EXP)
{
printf("方程有一个根:%f\n",(-b)/2*a);


}
else
{
printf("方程有两个实根:%f %f\n", ((-b) +sqrt( d)) / (2 * a), ((-b) - sqrt(d)) / (2 * a));
}
}
system("pause");
return 0;
}
判断一个浮点数是否等于20
int main()
{
float  f = 0.0;
scanf("%f", &f);
if ((f - 20.0) >= -EXP && (f - 20.0) <= EXP)
printf("yes\n");
else
printf("no\n");
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值