我写的是
public class Test10 {
public static void main(String args[]){
double a,b,result=1,sum=0;
for(a=1;a<=100;a++){
for(b=1;b<=a;b++){
result*=a;
}
sum+=result;
}
System.out.println("答案是"+sum);
}
}
不知道是哪里错了,请高手指教
我写的是
public class Test10 {
public static void main(String args[]){
double a,b,result=1,sum=0;
for(a=1;a<=100;a++){
for(b=1;b<=a;b++){
result*=a;
}
sum+=result;
}
System.out.println("答案是"+sum);
}
}
不知道是哪里错了,请高手指教
result没有复位
public class Test10 {
public static void main(String args[]){
double a,b,result=1,sum=0;
for(a=1;a<=100;a++){
result=1;//没循环一次复位一次
for(b=1;b<=a;b++){
result*=a;
}
sum+=result;
}
System.out.println("答案是"+sum);
}
}
(1)先要考虑精度,类型存储情况,因为 100^100 = (10^2 )^100 = 10 ^ 200 太大了 ;
double 存放的 数据 有 10^ 308 那么 大 。。还是足够放的。。
但是 200^200 > (100)^200 = 10^ 400 > 10 ^ 308 , 这个 时候就 不要 double 类型拉
(2) 程序改错:
for(a=1;a<=100;a++){
result=1; for(b=1;b<=a;b++){ result*=a; } sum+=result; } System.out.println("答案是"+sum); }
}
for(a=1;a<=100;a++){
result=1; for(b=1;b<=a;b++){ result*=a; }
这些问题还是小事,最大的问题是你按类型搞错了,您知道100的100次方是多少么200位的长度,您一个小小的DOUBLE能放得下?
BigInteger,BigDecimal