C语言 解方程问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 12:11:42
#include "stdio.h"
#include "math.h"
float f(float x);
void main()
{
float x,x1=0,x2=10;
x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
while(fabs(f(x))>=1e-6)
{
if(f(x)<0)
x1=x;
else
x2=x;
x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
}
printf("%f\t%f",x,f(x));
getch();
}

float f(float x)
{
return (x*x*x-5*x+16*x-80);
}

可能是 while(fabs(f(x))>=1e-6) 的问题 我编译没问题 可是运行竟然是个空白 而我把1e-6精度缩小的话 运行能够成功 是程序无法达到1e-6精度的原因吗??为什么?? 哪位高手帮我解答一下 急急!!!!!!

你说的是对的 精度无法达到
这个与你定义的float类型有关 由于float类型只能精确到小数点后6位 也就是说你的while循环始终会成立
不会有输出结果,但是缩小一点就没有问题了