zoukankan      html  css  js  c++  java
  • java.math.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型,要写为BigInteger two=new BigInteger("2"); //注意2双引号不能省略

    3,BigInteger类模拟了所有的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)
    Compares this BigInteger with the specified BigInteger. This method is provided in preference to individual methods for each of the six boolean comparison operators (<, ==, >, >=, !=, <=). The suggested idiom for performing these comparisons is: (x.compareTo(y) <op> 0), where <op> is one of the six comparison operators.
    Specified by:
    compareTo in interface Comparable<BigInteger>
    Parameters:
    val - BigInteger to which this BigInteger is to be compared.
    Returns:
    -1, 0 or 1 as this BigInteger is numerically less than, equal to, or greater than val.
    import java.math.BigInteger;
    
    public class BigIntegerDemo {
    
        public static void main(String[] args) {
            BigInteger big=BigInteger.ONE;
            System.out.println("BigInteger.ONE:"+big);
            System.out.println("nextProbablePrime:"+big.nextProbablePrime());
            System.out.println("nextProbablePrime:"+big.nextProbablePrime());
            
            big=BigInteger.TEN;
            System.out.println("BigInteger.TEN:"+big);
            
            big=BigInteger.ZERO;
            System.out.println("BigInteger.ZERO:"+big);
        }
    
    }
    View Code

    输出:

    BigInteger.ONE:1
    nextProbablePrime:2
    nextProbablePrime:2
    BigInteger.TEN:10
    BigInteger.ZERO:0
  • 相关阅读:
    使用Ruby On Rails建立一个山寨小说站(一)
    sql server 数据库备份概述
    JVM崩溃的原因及解决!
    C++中的字节对齐
    jqueyr用jsonp跨越,有服务器端代码(.net(C#语言))
    lammps_data文件
    jquery日历插件_时间范围_双日历_多日历
    js 判断所选时间(或者当前时间)是否在某一时间段
    webstorm安装时遇到The JVM could not be started的解决方法
    Webstorm快捷键
  • 原文地址:https://www.cnblogs.com/softidea/p/3904042.html
Copyright © 2011-2022 走看看