浮点型和零的⽐较
浮点型变量和零的⽐较:因为浮点数在内存的存储⽅式使得,有些浮点数在内存中⽆法精确的存储, 这样就必然有精度的缺失,⼀旦丢失就可能计算不够准确。⽆法⽤==直接判断两个浮点数相等。 不能直接⽐较,需要设置⼀个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浮点型变量float
{
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;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论