本次计算涉及阶乘,使用long时发生溢出.因此考虑使用 java的math包 BigDecimal
代码如下:
import java.math.BigDecimal;
public class test1{
public static void main(String args[]){
BigDecimal s=new BigDecimal(0);
for( int j=1;j<=100;j++){
BigDecimal result= new BigDecimal(1);
for(int i=1;i<=j;i++){
BigDecimal i_value= new BigDecimal(i);
result = result.multiply(i_value);
}
s=s.add(result);
}
System.out.println(s);
}
}
其中需要注意BigDecimal 四则运算方法
下面是实例
public static void bigdecimalmeth(){
BigDecimal bigvalue1 = new BigDecimal(100);
BigDecimal bigvalue2 = new BigDecimal(20);
BigDecimal result= new BigDecimal(0);
//加
result = bigvalue1.add(bigvalue2);
System.out.println("100+20="+result);
//减
result = bigvalue1.subtract(bigvalue2);
System.out.println("100-20="+result);
//乘
result = bigvalue1.multiply(bigvalue2);
System.out.println("100*20="+result);
//除
result = bigvalue1.divide(bigvalue2);
System.out.println("100/20="+result);
}
结果输出:
94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313