为什么设置huge=1e9?while 的条件为什么这么设置?
#include <stdlib.h>
#include <stdio.h>
int main()
{
int T,n;
scanf("%d",&T);
int a[101];
double r,X,Y,Z,x;
long long huge=1e9;
for (int i=0;i<T;i++) {
scanf("%d\n",&n);
for (int j=1;j<=n+1;j++) {
scanf("%d",&a[j]);
}
double MIN=-1.0,MAX=1.0;
while ((MAX-MIN)*huge>1.0) {
r = (MIN+MAX)/2;
X = a[1]*-1;
x = 1 + MIN;
for (int k=2;k<=n+1;k++) {
X *= x;
X += a[k];
}
Y= a[1]*-1;
x = 1 + MAX;
for (int k=2;k<=n+1;k++) {
Y *= x;
Y += a[k];
}
Z= a[1]*-1;
x = 1 + r;
for (int k=2;k<=n+1;k++) {
Z *= x;
Z += a[k];
}
if (X*Z>0) {
MIN = r;
}else {
MAX = r;
}
}
r = (MIN+MAX)/2;
printf("case #%d:\n",i);
if ((r-0)*huge<1.0 && (r-0)*huge>-1.0) {
printf("0.0000%%\n");
}else {
printf("%.4f%%\n",r*100);
}
}
return 0;
}