import java.math.BigDecimal
public class Information {
public static void main(String[] args) {
BigDecimal bg = new BigDecimal(1L)
int i = 1
while(i <= 100){
bg = bg.multiply(new BigDecimal(i++))
}
System.out.println(bg.toString())
}
}
使用BigInteger大容量运算类计算100的阶乘一.一般算法(循环)
view plaincopy to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1
for (int i = 1i <= 100i++) {
result *= i
}
System.out.println(result)
}
}
public class Test {
public static void main(String[] args) {
int result = 1
for (int i = 1i <= 100i++) {
result *= i
}
System.out.println(result)
}
}
输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double
二.使用BigInteger大容量运算类
view plaincopy to clipboardprint?
import java.math.BigInteger
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1")//为result赋初始值,为1
for (int i = 1i <= 100i++) {
BigInteger num = new BigInteger(String.valueOf(i))
result = result.multiply(num)//调用自乘方法
}
System.out.println(result)//输出结果
System.out.println(String.valueOf(result).length())//输出长度
}
}
import java.math.BigInteger
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1")//为result赋初始值,为1
for (int i = 1i <= 100i++) {
BigInteger num = new BigInteger(String.valueOf(i))
result = result.multiply(num)//调用自乘方法
}
System.out.println(result)//输出结果
System.out.println(String.valueOf(result).length())//输出长度
}
}
计算结果为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
产度:158