在Java中,当数字达到22!时,即使是long类型也会出现数据溢出的状况,此时我们需要使用Java自带的BigDecimal类(浮点型)或BigInteger类(整型)来保存数据。需要注意的是,对于以上的两个对象并不能使用简单的计算符号来计算,而是调用类提供的相关方法,可以自己查询。
java中BigDecimal的介绍及使用,BigDecimal格式化,BigDecimal常见问题
在完成计算后,需要用DecimalFormat类将得到的大数以科学计数法形式展现。转变为科学计数法的方法可以自己查询。
DecimalFormat的使用讲解数字格式化和demo(java小数控制,金额返回相关处理)
具体代码如下
import java.text.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
DecimalFormat df= new DecimalFormat("0.##E0");
BigDecimal count = new BigDecimal(0);
BigDecimal prev = new BigDecimal(1);
for (int i = 1; i <= 30; i++) {
prev = prev.multiply(BigDecimal.valueOf(i));
count = count.add(prev);
}
System.out.println(df.format(count));
}
}
最终输出结果: 2.74E32