Java大数处理类:BigInteger类和BigDecimal类

当我们要处理非常大的数据时,平常用的数据类型已不足以表示,在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,这两个类在理论上只要计算机内存足够大就能够表示无线大的数。它们都在java.math.*包中,我们可以在API文档中进行查看:

Java API 1.6 中文在线帮助文档 http://www.yq1012.com/api/

实例:

 1 import java.math.BigDecimal;
 2 import java.math.BigInteger;
 3
 4 /**
 5  * 测试大数
 6  */
 7 public class BigNumberDemo {
 8
 9     /**
10      * 测试 BigInteger大整数类
11      */
12     private static void testBigInteger() {
13         BigInteger bigInt1 = new BigInteger("12345678912345678912345"); // 实例化一个 BigInteger
14         long ln = 1234567899876543210L;
15         BigInteger bigInt2 = BigInteger.valueOf(ln); // 返回其值等于指定long的值的 BigInteger
16         System.out.println("测试BigInteger类:");
17         System.out.println("bigInt1 = " + bigInt1.toString()); // 输出值
18         System.out.println("bigInt2 = " + bigInt2.toString());
19         // 加法运算
20         BigInteger sum = bigInt1.add(bigInt2); // 返回值为(bigInt1+bigInt2)的 BigInteger
21         System.out.println("bigInt1 + bigInt2 = " + sum.toString());
22         // 减法运算
23         sum = bigInt1.subtract(bigInt2); // 返回值为(bigInt1-bigInt2)的 BigInteger
24         System.out.println("bigInt1 - bigInt2 = " + sum.toString());
25         // 乘法运算
26         sum = bigInt1.multiply(bigInt2); // 返回值为(bigInt1*bigInt2)的 BigInteger
27         System.out.println("bigInt1 * bigInt2 = " + sum.toString());
28         // 除法运算:整数商
29         sum = bigInt1.divide(bigInt2); // 返回值为(bigInt1/bigInt2)整数结果的 BigInteger
30         System.out.println("bigInt1 / bigInt2 = " + sum.toString());
31         // 除法运算:商+余数
32         BigInteger[] sums = bigInt1.divideAndRemainder(bigInt2); // 返回值为(bigInt1/bigInt2)整数结果的 BigInteger
33         System.out.println("bigInt1 / bigInt2 = " + sums[0].toString()
34                 + "\t余数:bigInt1 % bigInt2 = " + sums[1].toString());
35         // 取余数
36         sum = bigInt1.mod(bigInt2);
37         System.out.println("bigInt1 % bigInt2 = " + sum.toString());
38         // 指数
39         sum = bigInt1.pow(2);
40         System.out.println("bigInt1 ^ 2 = " + sum.toString());
41         // 比较两个数是否相等
42         System.out.println("比较两个数是否相等: " + bigInt1.equals(bigInt2));
43         // 比较两个数的大小
44         System.out.println("比较两个数的大小: " + bigInt1.compareTo(bigInt2)
45                 + "  (若小于为-1,等于为0,大于为1)");
46     }
47
48     /**
49      * 测试 BigDecimal大浮点数类
50      */
51     private static void testBigDecimal() {
52         BigDecimal bigDec1 = new BigDecimal("1234512345678912345678912345.123"); // 实例化一个 BigDecimal
53         Double db = 123456789.123456D;
54         BigDecimal bigDec2 = BigDecimal.valueOf(db); // 返回其值等于指定Double的值的 BigDecimal
55         System.out.println("\n测试BigDecimal类:");
56         System.out.println("bigDec1 = " + bigDec1); // 输出值
57         System.out.println("bigDec2 = " + bigDec2.toString());
58         // 加法运算
59         BigDecimal sum = bigDec1.add(bigDec2); // 返回值为(bigDec1+bigDec2)的 BigDecimal
60         System.out.println("bigDec1 + bigDec2 = " + sum.toString());
61         // 减法运算
62         sum = bigDec1.subtract(bigDec2); // 返回值为(bigDec1-bigDec2)的 BigDecimal
63         System.out.println("bigDec1 - bigDec2 = " + sum.toString());
64         // 乘法运算
65         sum = bigDec1.multiply(bigDec2); // 返回值为(bigDec1*bigDec2)的 BigDecimal
66         System.out.println("bigDec1 * bigDec2 = " + sum.toString());
67         // 除法运算:整数商
68         sum = bigDec1.divideToIntegralValue(bigDec2); // 返回值为(bigDec1/bigDec2)整数结果的 BigDecimal
69         System.out.println("bigDec1 / bigDec2 = " + sum.toString());
70         // 除法运算:商+余数
71         BigDecimal[] sums = bigDec1.divideAndRemainder(bigDec2); // 返回值为(bigDec1/bigDec2)整数结果的 BigDecimal
72         System.out.println("bigDec1 / bigDec2 = " + sums[0].toString()
73                 + "\t余数:bigDec1 % bigDec2 = " + sums[1].toString());
74         // 取余数
75         sum = bigDec1.remainder(bigDec2);
76         System.out.println("bigDec1 % bigDec2 = " + sum.toString());
77         // 指数
78         sum = bigDec1.pow(2);
79         System.out.println("bigDec1 ^ 2 = " + sum.toString());
80         // 比较两个数是否相等
81         System.out.println("比较两个数是否相等: " + bigDec1.equals(bigDec2));
82         // 比较两个数的大小
83         System.out.println("比较两个数的大小: " + bigDec1.compareTo(bigDec2)
84                 + "  (若小于为-1,等于为0,大于为1)");// 末位数据精度
85         System.out.println("bigDec1的末位数据精度:  " + bigDec1.ulp());
86     }
87
88     public static void main(String[] args) {
89         testBigInteger();
90         testBigDecimal();
91     }
92
93 }
时间: 2024-12-14 09:53:47

Java大数处理类:BigInteger类和BigDecimal类的相关文章

Random 大型整数操作类BigInteger 大型浮点数操作类BigDecimal

package test; import java.util.Random; public class RandomDemo { public static void main(String[] args) { Random random = new Random(); //输出5个0~100之间的随机数 for(int i=0; i<5; i++) { System.out.print(random.nextInt(100) + "\t");//2 28 14 20 12 }

Java基础系列9:BigInteger类和BigDecimal类

一 BigInteger类 当我们碰到需要处理一个很大的数字时,这时候肯定没法使用int和long.当然我们可以使用String来接收大数字,然后再采用拆分的方式来计算,不过这种方式很麻烦.因此在Java中为了解决这种问题,提供了BigInteger类.BigInteger类表示是大整数类,定义在java.math.*这个包中,如果操作的整数已经超过了整数的最大类型长度long,这时可以考虑使用BigInteger类来进行操作 常用方法的示例: package javase.base; impo

BigDecimal类的加减乘除

BigDecimal类的加减乘除 转自:http://blog.sina.com.cn/s/blog_6a0cd5e501011soa.html BigDecimal类型(+ - * /)所用的属性 11.10 BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作.BigDecimal类的常用方法如表11-15所示. 表11-15 BigDec

Java 大数类BigInteger和BigDecimal的基本函数

在Java中有两个类BigInteger和BigDecimal分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数).主要用于高精度计算中.这两个类使得java中的大数,高精度运算变得很简单,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大. 这两个类都在java.math.*包中,因此每次必须在开头处引用该包. Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger

Java中的大数处理类BigInteger和BigDecimar浅析

这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math.BigInteger;和import java.math.BigDecimal; BigInteger和BigDecimal分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数).主要用于高精度计算中.这两个类使得java中的大数,高精度运算变得很简单. 下面从几个方面对BigInteger和BigDecima做一个简单的比较: 一.常量 BigInteger:ONE,ZE

【Java】-BigInteger大数类的使用【超强Java大数模板 总结】

1. 单元变量常用大数操作: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String args[]){ Scanner cin= new Scanner(System.in); //使用Sacnner类创建cin对象 BigInteger a, b;//创建大数对象 while(cin.hasNext()){ a=cin.nextBigInteger(); b=

java大数类操作以及应用(UVA)

首先,先看看java大数的基本操作 Ⅰ基本函数: 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3; BigInteger b=BigInteger.valueOf(a); 则b=3; String s="12345"; BigInteger c=BigInteger.valueOf(s); 则c=12345: 2.add(); 大整数相加 BigInteger a=new BigInteger("23"); BigIntege

Java的大数操作分为BigInteger和BigDecimal

Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类. 大数操作类代码如下: 1 package blog; 2 3 import java.math.BigDecimal; 4 import java.math.BigInteger; 5 import java.math.RoundingMode; 6 7 /** 8 * 9 * @author 瓦尔登湖畔的小木屋 10 * BigN

JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)

当基础数据类型长度无法满足需求时可以使用大数类 构造方法接受字符串为参数 1 BigInteger bInt = new BigInteger("123123"); 2 BigDecimal bDouble = new BigDecimal("123123.123123124"); 基础操作(取模使用divideAndRemainder方法,返回的数组第二个元素为余数): BigDecimal在做除法时必须设定传入精度(保留多少位小数),否则会出现异常:java.l