大数操作(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常用类库——数字格式化(NumberFormat)与大数操作(BigIntger、BigDecimal类)

学习目标 可以使用NumberFormat类进行本地化数字显示。 可以使用DecimalFormat指定格式化模板。 可以使用BigInteger操作大整数。 可以使用BigDecimal指定...
  • u013087513
  • u013087513
  • 2016年07月05日 17:21
  • 2069

Bigint Multiplication:大数乘法(hihoCoder C++)

Bigint Multiplication时间限制:10000ms 单点时限:1000ms 内存限制:256MB描述Given 2 nonnegative integers a and b, ca...
  • hezhk3
  • hezhk3
  • 2016年11月09日 17:19
  • 132

一个大整数运算类源码(BigInt)

 本文提供大整数的运算,包含加减乘,次方,阶乘的运算。基本算法:        大整数运算的基本算法比较简单,很多书上都有介绍,本文有一点要说明,本文采用的是万进制来运算。为什么采用万进制?因为万进制...
  • Y___Y
  • Y___Y
  • 2006年11月26日 15:05
  • 3246

BigIntager类和BigDecimal类

BigInteger 如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。 不可变的任意精度的整数。所有操...
  • u014492025
  • u014492025
  • 2016年11月10日 19:08
  • 98

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

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

大数操作(BigIntger、BigDecimal)

1.Biglnteger 如果在操作的时候一个整形数据已经超过了整数的最大类型长度long 的话,则此数据就无法装入,所以,此时要使用Biglnteger 类进行操作。 BigIntege...
  • hanshileiai
  • hanshileiai
  • 2011年08月21日 14:12
  • 3232

大数操作(BigIntger、BigDecimal)笔记

  • 2011年12月15日 20:45
  • 216KB
  • 下载

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

【Java常用类库】_大数操作(BigIntger、BigDecimal) 分类: Java 【Java常用类库】_大数操作(BigIntger、BigDecimal) 本章...
  • geili_178
  • geili_178
  • 2014年10月01日 23:16
  • 226

Java 大数BigDecimal常用处理

import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main...
  • lmhacm
  • lmhacm
  • 2017年04月28日 10:15
  • 923

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

【Java常用类库】_大数操作(BigIntger、BigDecimal) 本章目标: 可以使用 BigInteger操作大整数 大数据操作。正常情况下一个整数只能放在long类型之中,...
  • e421083458
  • e421083458
  • 2013年01月29日 11:26
  • 4015
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大数操作(BigIntger、BigDecimal)
举报原因:
原因补充:

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