一、BigInteger

如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
No.
方法
类型
描述
1
public BigInteger(String val)
构造
将一个字符串变为BigInteger类型的数据
2
public BigInteger add(BigInteger val)
普通
加法
3
public BigInteger subtract(BigInteger val)
普通
减法
4
public BigInteger multiply(BigInteger val)
普通
乘法
5
public BigInteger divide(BigInteger val)
普通
除法
6
public BigInteger max(BigInteger val)
普通
返回两个大数字中的最大值
7
public BigInteger min(BigInteger val)
普通
返回两个大数字中的最小值
8
public BigInteger[] divideAndRemainder(BigInteger val)
普通
除法操作,数组的第一个元素为除法的商,第二个元素为除法的余数

二、使用BigInteger操作大整数

package com.pb.demo1;

import java.math.BigInteger;

public class BigIntegerDemo {

    public static void main(String[] args) {
BigInteger bi1=new BigInteger("123456789");
BigInteger bi2=new BigInteger("987654321");
System.out.println("加法操作:" + bi2.add(bi1)); // 加法操作
System.out.println("减法操作:" + bi2.subtract(bi1)); // 减法操作
System.out.println("乘法操作:" + bi2.multiply(bi1)); // 乘法操作
System.out.println("除法操作:" + bi2.divide(bi1)); // 除法操作
System.out.println("最大数:" + bi2.max(bi1)); // 求出最大数
System.out.println("最小数:" + bi2.min(bi1)); // 求出最小数
BigInteger result[] = bi2.divideAndRemainder(bi1) ; // 除法操作
System.out.println("商是:" + result[0] +
";余数是:" + result[1]); } }

结果:

加法操作:1111111110
减法操作:864197532
乘法操作:121932631112635269
除法操作:8
最大数:987654321
最小数:123456789
商是:8;余数是:9

三、使用BigDecimal指定小数的保留位数

对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算的结果,则必须使用BigDecimal类。
No.
方法
类型
描述
1
public BigDecimal(double val)
构造
将double表示形式转换为BigDecimal
2
public BigDecimal(int val)
构造
将int表示形式转换为BigDecimal
3
public BigDecimal(String val)
构造
将字符串表示形式转换为BigDecimal
4
public BigDecimal add(BigDecimal augend)
普通
加法
5
public BigDecimal subtract(BigDecimal subtrahend)
普通
减法
6
public BigDecimal multiply(BigDecimal multiplicand)
普通
乘法
7
public BigDecimal divide(BigDecimal divisor)
普通
除法
 
 

Java从零开始学二十九(大数操作(BigIntger、BigDecimal)的更多相关文章

  1. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

  2. Java从零开始学二十四(集合工具类Collections)

    一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...

  3. Java从零开始学二十(集合简介)

    一.为什么需要集合框架 数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象.或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题 二.集合框架主要接口 ...

  4. Java从零开始学二十八(Math类和Random类)

    一.Math概述 提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率) 二.常用方法 package com.pb.demo1; public class MathTest { ...

  5. Java从零开始学二十六(包装类)

    一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...

  6. Java从零开始学二十二(集合Set接口)

    一.Set接口的定义 Set接口也是Collection接口的子接口,但是与Collection或List接口不同的是,Set接口中不能加入重复的元素 Set接口的主要方法与Collection是一致 ...

  7. Java从零开始学二十五(枚举定义和简单使用)

    一.枚举 枚举是指由一组固定的常量组成的类型,表示特定的数据集合,只是在这个数据集合定义时,所有可能的值都是已知的. 枚举常量的名称建议大写. 枚举常量就是枚举的静态字段,枚举常量之间使用逗号隔开. ...

  8. Java从零开始学三十二(正则表达式)

    一.为什么要有正则 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆份.替换功能. 例如:现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法: 不使用正则完成 使用正则完 ...

  9. Java从零开始学四十二(DOM解析XML)

    一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...

随机推荐

  1. HDU 1269 移动城堡 联通分量 Tarjan

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. HDU 1722 Cake 数学题

    #include<iostream> #include<stdio.h> #include<math.h> using namespace std; long lo ...

  3. 关于InnoDB的一些认识

    一.聚簇索引 innoDB将表中数据按主键顺序构造成一颗B+树,叶子节点存放着整张表的行记录数据(索引组织表,即叶子节点就是数据页).因为无法把数据行存在二个不同的地方,因此每张表只能有一个聚集索引( ...

  4. 采用LinkedList来模拟栈数据结构的集合--先进后出

    三.用LinkedList来模拟栈数据结构的集合 /* * 自定义一个数据结构为LinkedList的集合类*/public class MyCollection_LinkedList { publi ...

  5. 多线程_java多线程环境下栈信息分析思路

    导读:Java多线程开发给程序带来好处的同时,由于多线程程序导致的问题也越来越多,而且对问题的查找和分析解决对于菜鸟程序原来是是件头疼的事.下面我就项目中使用多线程开发程序过程中遇到的问题做详细的分析 ...

  6. Spring <context:annotation-config/> 解说(转)

    在基于主机方式配置Spring的配置文件中,你可能会见到<context:annotation-config/>这样一条配置,他的作用是式地向 Spring 容器注册 AutowiredA ...

  7. js:深入prototype(上:内存分析)

    /**  * 下面演示了通过原型的创建方式,使用基于原型的创建能够将属性和方法  * 设置为Person专有的,不能通过window来调用.  * 原型是javascript中的一个特殊对象,当一个函 ...

  8. c++中两个类相互包含引用的相关问题

    在构造自己的类时,可能会遇到两个类相互引用的问题. 例如: class A { int i; B b; }; class B { int i; A a; }; 在这种情况下,这样就会出现一个死循环a. ...

  9. C#编程(四)

    原文地址:http://blog.csdn.net/shanyongxu/article/details/46400067 C#预定义数据类型 C#中的可用类型以及及其定义非常严格,C#中获得数据类型 ...

  10. ACM-DP之最大连续子序列——hdu1231

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...