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
  • 相关阅读:
    go函数
    Linux 查看磁盘容量、查找大文件、查找大目录
    五分钟理解一致性哈希算法(consistent hashing)
    使用Java实现三个线程交替打印0-74
    Python实现IOC控制反转
    Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
    Yandex Big Data Essentials Week1 Scaling Distributed File System
    Yandex Big Data Essentials Week1 Unix Command Line Interface Processes managing
    Yandex Big Data Essentials Week1 Unix Command Line Interface File Content exploration
    Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  • 原文地址:https://www.cnblogs.com/softidea/p/3904042.html
Copyright © 2011-2022 走看看