zoukankan      html  css  js  c++  java
  • HW—可怕的阶乘n!__注意大数据函数的使用BigInteger

     java.math.BigInteger系列教程(四)BigInteger的诞生原因

          为什么java里面要出现BigInteger类型呢?相信很多人有这个疑问,其实原因很简单,它可以表达更大范围的数值,远远比long表示的最大值还要大的多数。在整数类型里面,long可以表达最大值,如下所示:

    1
    2
    3
    4
    5
    6
    7
    public class Test
    {
    public static void main(String[] args)
    {
    System.out.println(Long.MAX_VALUE);
    }
    }

    结果为:9223372036854775807
      而使用BigInteger,则可以表示更大的值,理论上只要你内存足够大,就能,如下面的例子:

    结果为:18446744073709551614

      因为BigInteger没有重载"+","-","*",“/”, “%”这五个运算操作符,是不能直接进行数据运算的,需要调用它的相应方法:add,subtract,multiply,divide,remainder。

         

      

    Java版本的是:

    package t0816;
    
    import java.math.BigInteger;  
    public final class BigN {     
        public static BigInteger  multiply(BigInteger m,int n) {     
            BigInteger sn = new BigInteger(Integer.toString(n));     
            BigInteger sqy = m.multiply(sn);  //大数据的加减乘除用的是add、subtract、multiply、divide,remainder。
            return sqy;     
        }          
        public static String  calcNN(int n) {
            if(n >= 0){ 
                BigInteger one = new BigInteger(Integer.toString(1)); //1的初始化
                for(int i=1;i <= n;i++)     {                 
                    one = multiply(one,i);  //调用上面的累成函数;大数据的累成
                    }
                return one.toString();         
                }
            else   return null;     
        } 
        
        public static void main(String arg[]) {     //主函数
            System.out.println(calcNN(13));    //这里直接装的13;   
        }
    }

     输出:6227020800

  • 相关阅读:
    重写移动端滚动条[iScroll.js核心代码]
    利用canvas将网页元素生成图片并保存在本地
    微信小程序的拖拽、缩放和旋转手势
    设计模式之访问者(visitor)模式
    设计模式之原型(prototype)模式
    设计模式之享元(flyweight)模式
    设计模式之职责链模式
    设计模式之组合(compose)模式
    leetcode16
    校招真题练习013 找零(头条)
  • 原文地址:https://www.cnblogs.com/snowwhite/p/4735070.html
Copyright © 2011-2022 走看看