• BigInteger使用总结(也是不可变的)


           今天参考课本写了一个关于二进制与十进制转换的程序,程序算法不难,但写完后测试发现不论是二转十还是十转二,对于大于21亿即超过整数范围的数不能很好的转换。都会变成0.

    参考书籍发现使用使用BigInteger可以解决这个问题。

    于是查找了下JDK,然后测试几次终于写成功了!

    使用心得如下:

     

    1,BigInteger属于java.math.BigInteger,因此在每次使用前都要import这个类。偶开始就忘记import了,于是总提示找不到提示符。

     

    2,其构造方法有很多,但现在偶用到的有:

    BigInteger(String val)

               BigInteger 的十进制字符串表示形式转换为 BigInteger

    BigInteger(String val, int radix)

              将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger

    如要将int型的2转换为BigInteger型,要写为BigIntegertwo=new BigInteger("2"); //注意2双引号不能省略

     

    3BigInteger类模拟了所有的int型数学操作,如add()==+,divide()==-”等,但注意其内容进行数学运算时不能直接使用数学运算符进行运算,必须使用其内部方法。而且其操作数也必须为BigInteger型。

    如:two.add(2)就是一种错误的操作,因为2没有变为BigInteger型。

     

    4,当要把计算结果输出时应该使用.toString方法将其转换为10进制的字符串,详细说明如下:

     

     String

    toString()

              返回此 BigInteger 的十进制字符串表示形式。

    输出方法:System.out.print(two.toString());

     

    5,另外说明三个个用到的函数。   

     BigInteger

    remainder(BigInteger val)

              返回其值为 (this % val)  BigInteger

     BigInteger

    negate()

              返回其值是 (-this)  BigInteger

     int       

    compareTo(BigInteger val)

              将此 BigInteger 与指定的 BigInteger 进行比较。

    remainder用来求余数。

    negate将操作数变为相反数。

    compare的详解如下:

    compareTo

    public int compareTo(BigInteger val)

    将此 BigInteger 与指定的 BigInteger 进行比较。对于针对六个布尔比较运算符 (<, ==, >, >=, !=,<=) 中的每一个运算符的各个方法,优先提供此方法。执行这些比较的建议语句是:(x.compareTo(y) <op> 0),其中 <op> 是六个比较运算符之一。

    指定者:

    接口 Comparable<BigInteger中的 compareTo

    参数:

    val - 将此 BigInteger 与之比较的 BigInteger

    返回:

    当此 BigInteger 在数值上小于、等于或大于 val 时,返回 -10,或 1


             
    import  java.math.BigInteger; 
    
     
    
    public   class  Test   { 
    
    public   static  void   main(String[]   args)   { 
    
    BigInteger  one   =   new   BigInteger( "1 "); 
    
    BigInteger  two   =   new   BigInteger( "2 "); 
    
    BigInteger  three   =   new   BigInteger( "3 "); 
    
    BigInteger  sum   =   new   BigInteger( "0 "); 
    
    sum.add(one); 
    
    sum.add(two); 
    
    sum.add(three); 
    
    System.out.println(sum.toString()); 
    
    } 
    
    } 


     

    输出:0

     

    add方法返回两个数的和,但是本身的值不变。

  • 相关阅读:
    NXOPEN二次开发CAM Operation转OperationBuilder对加工操作修改一些进给速度参数
    NX二次开发MFC对话框自己重绘Button控件(提升美观度)重写DrawItem方法(已完结)
    NX二次开发使用SendMessage给NX窗口发送消息最小化
    NX二次开发调内部函数将对象设置为全局选择(设为高亮选中状态,在选择列表里)
    NX二次开发UFUN输入一个点,距离,矢量方向,获得另外一个点的坐标UF_VEC3_affine_comb
    NX二次开发UFUN获得NX的窗口句柄UF_UI_get_default_parent
    vuetiger机抽奖组件(转)
    浅谈module.exports与exports,export与export default的区别
    解决echarts控制台警告:There is a chart instance already initialize on the dom
    maven版本管理
  • 原文地址:https://www.cnblogs.com/allenzhaox/p/3201835.html
Copyright © 2020-2023  润新知