天天看點

java求100的階乘

最初的想法:代碼如下

/**

* 計算100的階乘

* @author Administrator

*

*/

public class Test {

public static void main(String args[]){

int result= 1;

for(int i=1;i<101;i++){

result = result*i;

}

System.out.println("result="+result);

}

}

但發現執行結果為0,因為資料太大了int是儲存不下的!

修改

import java.math.BigDecimal;

/**

* 計算100的階乘

* @author Administrator

*

*/

public class Test {

public static void main(String args[]){

BigDecimal result= new BigDecimal(1);

for(int i=1;i<101;i++){

BigDecimal i_value= new BigDecimal(i);

result = result.multiply(i_value);

}

System.out.println("result="+result);

}

}

運作結果:

result=93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

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);

}