这样补知道行不行. import java.math.BigInteger;public class X100 { public static void main(String[] args) { BigInteger x = new BigInteger("1"); BigInteger m = new BigInteger("1"); for(int i=1;i<100;i++){ BigInteger k = new BigInteger("1"); x=x.multiply(m); m=m.add(k); System.out.println(x);
for(int i=1;i<=3;i++) {
sum= sum*i;
}
System.out.println(sum);
}-----------------------------------------------------------------
lz代码的问题在于interger的最大值是2147483647(Integer.MAX_VALUE)
而!100 是9.33262154439441E157, 这个数远远超过2147483647, 所以出错
String sum = "1";
for(int i=1;i<=100;i++)
{
sum=Double.toString(Double.parseDouble(sum)*i);
}
System.out.println(sum);
System.out.println(Integer.MAX_VALUE);
或者BigInteger类。
---------------------------------------------------------------------------
double类型的精度够吗?
100!是一个整数啊,从个位到最高位都应该能够精确表示的。
import java.math.BigInteger;public class X100 { public static void main(String[] args)
{
BigInteger x = new BigInteger("1");
BigInteger m = new BigInteger("1");
for(int i=1;i<100;i++){
BigInteger k = new BigInteger("1");
x=x.multiply(m);
m=m.add(k);
System.out.println(x);
}
}
}结果挺大的.
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000
for(int i=1;i<101;i++){
...
}