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);
    }

}

输出:

BigInteger.ONE:1
nextProbablePrime:2
nextProbablePrime:2
BigInteger.TEN:10
BigInteger.ZERO:0

java.math.BigInteger使用心得总结(转)

时间: 2024-10-18 07:20:05

java.math.BigInteger使用心得总结(转)的相关文章

Java中的java.math.BigInteger

Java中的java.math.BigInteger /** * */ package com.you.model; /** * @author YouHaidong * */ public class BigInteger { /** * @param args */ public static void main(String[] args) { java.math.BigInteger one = new java.math.BigInteger("1"); java.math.

[记录]java.math.biginteger cannot be cast to java.lang.long

可以直接使用BigInteger类型进行接收, BigInteger id = (BigInteger)QueryRunner(conn,"SELECT LAST_INSERT_ID",new Scala) java.math.BigInteger cannot be cast to java.lang.Integer java.math.BigInteger cannot be cast to java.lang.Long

java.math.BigDecimal类的用法

在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类.这两个类用于高精度计 算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类.下边我们介绍BigDecimal类: BigDecimal的实现利用到了BigInteger,不同的是BigDecimal加入了小数的概念.一般的float型和Double型数据只可 以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高

java之BigInteger类

1.BigInteger类概述 可以让超过Integer范围内的数据进行运算. 2.BigInteger类的构造方法 public BigInteger(String val) 将BigInteger的十进制字符串表示形式转换为BigInteger package com; import java.math.BigInteger; /**  * BigInteger类  *  可以让超过Integer范围内的数据进行运算  * 构造方法  *  public BigInteger(String 

Java API —— BigInteger类

1.BigInteger类概述        可以让超过Integer范围内的数据进行运算 2.构造方法     public BigInteger(String val) 3.BigInteger类成员方法 public BigInteger add(BigInteger val):加 public BigInteger subtract(BigInteger val):减 public BigInteger multiply(BigInteger val):乘 public BigInteg

ZOJ 3447 Doraemon&#39;s Number Game(Java优先队列&#183;BigInteger)

题意  给你一个数组  你每次可以从中删掉2到k个数  然后把删掉的数的积加入到原数组  直到最后只剩一个数   求这样能得到的最大值和最小值的差 每次选的数值越小  选的数量越少  最后得到的结果肯定越大  因为这样大的数可以乘以最大的倍数  运算的次数也是最多从而使+1的次数最多  这显然是有利于最后结果的增大的 同理  每次选的数越大  选的数越多  最后得到的结果越小 这样最大值就是每次取最小的两个数  最大值就是每次取最大的k个数了   很容易用优先队列实现   结果会很大  用Jav

九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。

题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 样例输入: 4 5 15 样例输出: 24 120 1307674368000 1 package a; 2 import java.math.BigInteger; 3 import java.util.*; 4 public class Main{ 5 public static void main(String[] args) { 6 S

Java math库的总结

java.math.Math类常用的常量和方法: Math.PI 记录的圆周率Math.E记录e的常量Math.abs 求绝对值Math.sin 正弦函数 Math.asin 反正弦函数Math.cos 余弦函数 Math.acos 反余弦函数Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度Math.ceil 得到不小于某数的最大整数Math.floor 得到

浅谈java中bigInteger用法

1.赋值: BigInteger a=new BigInteger("1"); BigInteger b=BigInteger.valueOf(1); 2.运算: ① add(); 大整数相加 BigInteger a=new BigInteger("23"); BigInteger b=new BigInteger("34"); a. add(b); ②subtract(); 相减 ③multiply(); 相乘 ④divide(); 相除取整