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

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

实例:

 import java.math.BigDecimal;
import java.math.BigInteger; /**
* 测试大数
*/
public class BigNumberDemo { /**
* 测试 BigInteger大整数类
*/
private static void testBigInteger() {
BigInteger bigInt1 = new BigInteger("12345678912345678912345"); // 实例化一个 BigInteger
long ln = 1234567899876543210L;
BigInteger bigInt2 = BigInteger.valueOf(ln); // 返回其值等于指定long的值的 BigInteger
System.out.println("测试BigInteger类:");
System.out.println("bigInt1 = " + bigInt1.toString()); // 输出值
System.out.println("bigInt2 = " + bigInt2.toString());
// 加法运算
BigInteger sum = bigInt1.add(bigInt2); // 返回值为(bigInt1+bigInt2)的 BigInteger
System.out.println("bigInt1 + bigInt2 = " + sum.toString());
// 减法运算
sum = bigInt1.subtract(bigInt2); // 返回值为(bigInt1-bigInt2)的 BigInteger
System.out.println("bigInt1 - bigInt2 = " + sum.toString());
// 乘法运算
sum = bigInt1.multiply(bigInt2); // 返回值为(bigInt1*bigInt2)的 BigInteger
System.out.println("bigInt1 * bigInt2 = " + sum.toString());
// 除法运算:整数商
sum = bigInt1.divide(bigInt2); // 返回值为(bigInt1/bigInt2)整数结果的 BigInteger
System.out.println("bigInt1 / bigInt2 = " + sum.toString());
// 除法运算:商+余数
BigInteger[] sums = bigInt1.divideAndRemainder(bigInt2); // 返回值为(bigInt1/bigInt2)整数结果的 BigInteger
System.out.println("bigInt1 / bigInt2 = " + sums[0].toString()
+ "\t余数:bigInt1 % bigInt2 = " + sums[1].toString());
// 取余数
sum = bigInt1.mod(bigInt2);
System.out.println("bigInt1 % bigInt2 = " + sum.toString());
// 指数
sum = bigInt1.pow(2);
System.out.println("bigInt1 ^ 2 = " + sum.toString());
// 比较两个数是否相等
System.out.println("比较两个数是否相等: " + bigInt1.equals(bigInt2));
// 比较两个数的大小
System.out.println("比较两个数的大小: " + bigInt1.compareTo(bigInt2)
+ " (若小于为-1,等于为0,大于为1)");
} /**
* 测试 BigDecimal大浮点数类
*/
private static void testBigDecimal() {
BigDecimal bigDec1 = new BigDecimal("1234512345678912345678912345.123"); // 实例化一个 BigDecimal
Double db = 123456789.123456D;
BigDecimal bigDec2 = BigDecimal.valueOf(db); // 返回其值等于指定Double的值的 BigDecimal
System.out.println("\n测试BigDecimal类:");
System.out.println("bigDec1 = " + bigDec1); // 输出值
System.out.println("bigDec2 = " + bigDec2.toString());
// 加法运算
BigDecimal sum = bigDec1.add(bigDec2); // 返回值为(bigDec1+bigDec2)的 BigDecimal
System.out.println("bigDec1 + bigDec2 = " + sum.toString());
// 减法运算
sum = bigDec1.subtract(bigDec2); // 返回值为(bigDec1-bigDec2)的 BigDecimal
System.out.println("bigDec1 - bigDec2 = " + sum.toString());
// 乘法运算
sum = bigDec1.multiply(bigDec2); // 返回值为(bigDec1*bigDec2)的 BigDecimal
System.out.println("bigDec1 * bigDec2 = " + sum.toString());
// 除法运算:整数商
sum = bigDec1.divideToIntegralValue(bigDec2); // 返回值为(bigDec1/bigDec2)整数结果的 BigDecimal
System.out.println("bigDec1 / bigDec2 = " + sum.toString());
// 除法运算:商+余数
BigDecimal[] sums = bigDec1.divideAndRemainder(bigDec2); // 返回值为(bigDec1/bigDec2)整数结果的 BigDecimal
System.out.println("bigDec1 / bigDec2 = " + sums[0].toString()
+ "\t余数:bigDec1 % bigDec2 = " + sums[1].toString());
// 取余数
sum = bigDec1.remainder(bigDec2);
System.out.println("bigDec1 % bigDec2 = " + sum.toString());
// 指数
sum = bigDec1.pow(2);
System.out.println("bigDec1 ^ 2 = " + sum.toString());
// 比较两个数是否相等
System.out.println("比较两个数是否相等: " + bigDec1.equals(bigDec2));
// 比较两个数的大小
System.out.println("比较两个数的大小: " + bigDec1.compareTo(bigDec2)
+ " (若小于为-1,等于为0,大于为1)");// 末位数据精度
System.out.println("bigDec1的末位数据精度: " + bigDec1.ulp());
} public static void main(String[] args) {
testBigInteger();
testBigDecimal();
} }

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

  1. (转)Java大数操作(BigInteger、BigDecimal)

    基础知识 对于二进制来说,最高位代表正负号,-0表示-128,+0表示032位系统int型4个字节:-(2的31次方) ~ (2的31次方) 减 1最大负数:10000000 00000000 000 ...

  2. 关于Java大数操作(BigInteger、BigDecimal)

    本文目标 可以使用BigInteger操作大整数 可以使用BigDecimal指定小数的保留位数 基础知识 对于二进制来说,最高位代表正负号,-0表示-128,+0表示032位系统int型4个字节:- ...

  3. 用C# BigInteger实现的BigDecimal类,终于可以直接做四则运算了。

    https://code.google.com/p/dotnet-big-decimal/ 这是个BigDecimal类的开源项目,支持Operators +, - and *. 俺给改了改,加上了除 ...

  4. Java学习——BigInteger类和BigDecimal类

    Java学习——BigInteger类和BigDecimal类 摘要:本文主要学习了用于大数字运算的BigInteger类和BigDecimal类. 部分内容来自以下博客: https://www.c ...

  5. Java BigDecimal和double BigDecimal类

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...

  6. Java基础教程——BigDecimal类

    BigDecimal类 float.double类型的数字在计算的时候,容易发生精度丢失. 使用java.math.BigDecimal类可以解决此类问题. 前面讲过Math类,现在的BigDecim ...

  7. BigDecimal类

    如果需要精确的计算结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作. //========================================== ...

  8. BigDecimal类(精度计算类)的加减乘除

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...

  9. JAVA大数(转)

    1.输入 首先要想输入需要先包括: import java.util.*; 我们需要其中的 Scanner类声明的对象来扫描控制台输入. 针对A+B来说: import java.util.*; pu ...

随机推荐

  1. activiti查看流程图,有中文乱码

    第一种 因为服务器缺少必要的字体到这的问题: 解决办法 <!-- 发布流程生成图片是正常显示中文 -->            <property name="activi ...

  2. [POJ2892]Tunnel Warfare

    [POJ2892]Tunnel Warfare 试题描述 During the War of Resistance Against Japan, tunnel warfare was carried ...

  3. VirtualBox CentOS安装增强功能与设置共享文件夹

    如果安装的是CentOS minimal版无网络的可以看这篇文章. 一.安装依赖环境 依次执行如下命令 yum install update yum install kernel-headers yu ...

  4. android开发中获取<meta-data>数据

    在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...

  5. PHP判断用户操作系统(Android,ipad,iphone,windows)

    这段脚本可以运用在:针对不同的操作系统,把用户引导向相应的网站或做相应的处理. <?php // PHP 判断客户端平台(PC.安卓.iPhone.平板) // strpos() 函数返回字符串 ...

  6. dict.items vs six.iteritems

    python2里面,dict.items返回的是数组,six.iteritems(dict)则返回生成器. 意味着,dict很大的时候,后者不占用内存. >>> import six ...

  7. 术&道

    技术分为术和道两种. 具体做事的方法为术:做事的原理和原则是道. 追求术的人一辈子工作很辛苦,只有掌握了道的本质和精髓才能永远游刃有余. 在纷繁的选择面前, 不知到哪些是对的没关系, 知道哪些是不好的 ...

  8. python tkinter用Treeview实现ListView效果

    先上图 再上代码: import ttk from Tkinter import * root = Tk() tree = ttk.Treeview(root, columns=('col1','co ...

  9. discuzX3后台管理插件开发示例一 用户表查询

    上次的入门已经介绍了后台管理插件开发的基本步骤,下面简单写一个示例查询一下用户表 需要已完成以下操作: 1.已创建test后台管理插件 //详见 http://www.cnblogs.com/savo ...

  10. JNative library not loaded, sorry ! win7 64位系统

    java调用动态链接库时,使用myeclipse或者其他IDE工具时,针对于web程序,会报这样的错误: java.lang.IllegalStateException: JNative librar ...