Java计算1到100的阶乘的和(超过long范围的整数)
- 整数型:
- int范围:-2^31~(2^31-1),即:-2147483648~2147483647;
- long范围:-2^63~(2^63-1),即:-9223372036854775808~9223372036854775807;
- 浮点型:只能计算16位的有效数字
- 大数字计算方法:Java中提供了针对大数字的操作类,即 java.math.BigInteger 类和 java.math.BigDecimal 类(即java.math.BigDecimal-java.math包下类).
- 区别: BigInteger 类是针对大整数的处理类,BigDecimal 类是针对大小数的处理类, 加入了小数的概念.
- //初始化方式:不像String可以直接赋值,而是和其他自定义的类一样,需要调用它的构造器进行初始化。这个类的取值范围原则上是没有上限的,取决于计算机内存。
- 常用的方法:
更多的方法请自行查找API
- 最终实现
import java.math.BigInteger; public class Demon03 { public static void main(String[] args){ BigInteger num = new BigInteger("0"); BigInteger n = new BigInteger("1"); BigInteger m = new BigInteger("1"); BigInteger l = new BigInteger("1"); BigInteger k = new BigInteger("100"); do{ num = num.add(m); n = n.add(l); m = m.multiply(n); }while(n.compareTo(k)<0);
/*compareTo():比较字符串,如果相等,则返回值 0; 如果此字符串小于字符串参数,则返回一个小于 0 的值; 如果此字符串大于字符串参数,则返回一个大于 0 的值*/ System.out.println("1!+2!+...+100!="+num); } }