#include<stdio.h>
#include<math.h>
int main()
{
double x1=3.14159/4, x0, f, f1, eps;
printf("Input eps:");
scanf("%lf",&eps);
do
{
x0=x1;
f=(cos(x0)-x0);
f1=(sin(x0)-1);
x1=x0-f/f1;
}while(fabs(f)>=eps);
printf("cos(x)-x=0,x=%.8f",x0);
return 0;
}
double用%lf输出
原因:
INF表示超出浮点数表示范围(值溢出);
当值很大或很小时会输出INF:1.0/0.0,-1.0/0.0,0.0+inf=inf;log(0);
得到inf时就查看是否有溢出或者除以0;
可用自定义函数 :
int isFiniteNumber(double d) {return (d<=DBL_MAX&&d>=-DBL_MAX);}
来判断d是否为一个finite数;