|
25鱼币
#include <stdio.h>
#include <math.h>
void main()
{
double l, a, b;
for(l = 0.1; l <= 5; l=l+0.1)
{
a = l*l;
b = 2*l;
if(a==b)
{printf("%lf, %lf, %lf\n", a, b ,l);}
}
}
代码如上,按理说应该输出4.000000,4.000000, 2.000000,可结果却什么也没有,请问为什么呢?
#include<stdio.h>
#include<math.h>
void main()
{
double l, a, b;
for(l = 0.1; l <= 5; l+=0.1)
{
a = l*l;
b = 2*l;
#if(0)
浮点相等不能够用==判断
需要用数学公式fabs计算它们差的绝对值,
1e-6就是10的-6次方=0.000001
fabs(a-b)这个是ab差的绝对值,
如果小于0.000001也就是精度,
就判断为真。
这样就可以输出,4.0000和2.000了!
#endif
if(fabs(a-b)<1e-6)
{
printf("%lf, %lf, %lf\n", a, b,l);
}
}
}
|
最佳答案
查看完整内容
#include
#include
void main()
{
double l, a, b;
for(l = 0.1; l
|