|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我写了个求平方根的小程序,程序是写出来的,参数都是用long double型定义的,long double型的数不是可以很大吗?可以到2的正负2000次方,虽然结果也基本正确,但是为什么精度如果大于0.000000000000001,程序就没反应了呢?
这个是0.000000000000001的
上面的是精度是0.000000000000001的。
下面:
这个精度是:0.0000000000000001的,就比上面的多了一个0.
如后程序就没反应了,倒是也没死机,那位老大给看看啥原因,如何解决:
代码如下:
#include <stdio.h>
void main()
{
long double mysqrt(long double,long double),a,b;
while(1)
{
printf("请输入数字:");
scanf("%lf",&a);
printf("\n请输入精度:");
scanf("%lf",&b);
printf("\n近似平方根为:%40.30lf\n",mysqrt(a,b));
}
}
long double mysqrt(long double x,long double k)
{
long double i,j;
long double temp=0,result=0;
for(i=1;i>=k;i=i/10)
{
if(result*result==x)break;
temp=result;
printf("%40.30lf\n",result);
for(j=1;;j++)
{
if(temp*temp==x)break;
if(x>temp*temp)
{
result=temp;
temp=temp+i;
}
if(x<temp*temp)
{
break;
}
}
}
return result;
}
那个是最大值,但是真正的有效精度 float 是 7 位小数,double 是 15 位小数
|
|