大数操作(BigIntger、BigDecimal)

原创 2011年08月21日 14:12:09

1.Biglnteger

如果在操作的时候一个整形数据已经超过了整数的最大类型长度long 的话,则此数据就无法装入,所以,此时要使用Biglnteger 类进行操作。


BigInteger 是在java.math 包中。

import java.math.BigInteger ;
public class BigIntegerDemo01{
	public static void main(String args[]){
		BigInteger bi1 = new BigInteger("123456789") ;	// 声明BigInteger对象
		BigInteger bi2 = new BigInteger("987654321") ;	// 声明BigInteger对象
		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]) ;
	}
};

2.BigDecimal

对于不需要任何准确计算精度的程序可以直接使用float 或double 完成,但是如果需要精确计算的结果,则必须使用BigDecimal 类。


import java.math.* ;
class MyMath{
	public static double add(double d1,double d2){		// 进行加法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.add(b2).doubleValue() ;
	}
	public static double sub(double d1,double d2){		// 进行减法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.subtract(b2).doubleValue() ;
	}
	public static double mul(double d1,double d2){		// 进行乘法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.multiply(b2).doubleValue() ;
	}
	public static double div(double d1,double d2,int len){		// 进行乘法计算
		BigDecimal b1 = new BigDecimal(d1) ;
		BigDecimal b2 = new BigDecimal(d2) ;
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
	}
	public static double round(double d,int len){	// 进行四舍五入
		BigDecimal b1 = new BigDecimal(d) ;
		BigDecimal b2 = new BigDecimal(1) ;
		return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
	}
};

public class BigDecimalDemo01{
	public static void main(String args[]){
		System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;
		System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;
		System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;
		System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ;
	}
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

java中的BigInteger(很好很强大)(转)

JAVA之BigInteger 用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂。用Java刷了一些题,感觉Java还不错,在处...
  • w00w12l
  • w00w12l
  • 2012年02月24日 14:42
  • 97072

基础练习 阶乘计算 (大整数Bignteger的应用)

问题描述   输入一个正整数n,输出n!的值。   其中n!=1*2*3*…*n。 算法描述   n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组...

【Java常用类库】_大数操作(BigIntger、BigDecimal)

【Java常用类库】_大数操作(BigIntger、BigDecimal) 本章目标: 可以使用 BigInteger操作大整数 大数据操作。正常情况下一个整数只能放在long类型之中,...

mybatis select元素的使用以及模糊查询

• Select元素来定义查询操作。 • Id:唯一标识符。 – 用来引用这条语句,需要和接口的方法名一致 • parameterType:参数类型。 – 可以不传,MyBatis会根据Typ...

duubo duuboMock mockDubbo源代码解析 模拟dubbo调用,类似依赖注入获取对应信息

public class DubboProtocol extends AbstractProtocol { 这里面从请求参数里得到对应的invoker DubboExporter export...

【Java常用类库】_大数操作(BigIntger、BigDecimal)

【Java常用类库】_大数操作(BigIntger、BigDecimal) 分类: Java 【Java常用类库】_大数操作(BigIntger、BigDecimal) 本章...

Java常用类库——数字格式化(NumberFormat)与大数操作(BigIntger、BigDecimal类)

学习目标 可以使用NumberFormat类进行本地化数字显示。 可以使用DecimalFormat指定格式化模板。 可以使用BigInteger操作大整数。 可以使用BigDecimal指定...

大数操作(BigInteger类、BigDecimal类)

BigInteger:支持任意精度的整数,可以精确地表示任意大小的整数值,同时在运算过程中不会丢失任何信息。 BigDecimal:可以精确地表示任意精度的小数,同时在运算过程中不会丢失任何信息,并...
  • tomcmd
  • tomcmd
  • 2015年10月11日 18:51
  • 397

Java高新技术——大数操作(BigInteger、BigDecimal)

本篇博客主要介绍Java常用类库之大数操作,主要是BigInteger和BigDecimal的API学习。之后介绍华为的一道历年真题,十六进制转换成十进制,我们可以看到题目中给我们设置的陷阱,以及如何...

java常用类库续2(大数操作BigInteger、BigDecimal类、对象克隆技术、Arrays类)

大数操作(BigInteger、BigDecimal) 大数操作:正常情况下一个整数最多只能放在long类型之中,但是现在如果有以下一个数字:1111111111111111111111111111...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大数操作(BigIntger、BigDecimal)
举报原因:
原因补充:

(最多只允许输入30个字)