大数据运算 BigInteger BigDecimal

大数据运算 BigInteger BigDecimal

BigInteger

java中long型为最大整数类型,在Java中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.

BigInteger类的构造方法:

BigInteger b = new BigInteger(str);

构造方法中,采用字符串的形式给出整数

BigDecimal

double和float类型在运算中很容易丢失精度,造成数据的不准确性,Java提供我们BigDecimal类可以实现浮点数据的高精度运算

构造方法如下:

BigDecimal b = new BigDecimal(str);

建议浮点数据以字符串形式给出,因为参数结果是可以预知的

实现加法减法乘法代码如下:(运算方法与BigInteger一致)

对于浮点数据的除法运算,和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式

BigDecimal b = big1.divide(big2,保留小数点后面几位,舍入模式)

BigDecimal b = big1.divide.(big2,2,BigDecimal.ROUND_DOWN)


import java.math.BigDecimal;
import java.math.BigInteger;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 大数据封装为BigInteger对象
		BigInteger big1 = new BigInteger("123456789012345678901234567890");
		BigInteger big2 = new BigInteger("12345678901234567890");
		// add加法运算
		BigInteger bigadd = big1.add(big2);
		System.out.println(bigadd);
		// 减法运算
		BigInteger bigsub = big1.subtract(big2);
		System.out.println(bigsub);
		// 乘法运算
		BigInteger bigmul = big1.multiply(big2);
		System.out.println(bigmul);
		// 除法运算
		BigInteger bigdiv = big1.divide(big2);
		System.out.println(bigdiv);
		// 其他运算 abs?

		System.out.println("-----------");

		System.out.println(0.09 + 0.01);

		System.out.println(1.0 - 0.32);

		System.out.println(1.015 * 100);

		System.out.println(1.301 / 100);

		System.out.println("-----------");

		// 大数据封装为BigDecimal对象

		BigDecimal big3 = new BigDecimal("0.09");
		BigDecimal big4 = new BigDecimal("0.01");
		// add实现加法运算
		BigDecimal bigAdd = big3.add(big4);
		System.out.println(bigAdd);

		BigDecimal big5 = new BigDecimal("1.0");
		BigDecimal big6 = new BigDecimal("0.32");
		// subtract实现减法运算
		BigDecimal bigSub = big5.subtract(big6);
		System.out.println(bigSub);

		BigDecimal big7 = new BigDecimal("1.105");
		BigDecimal big8 = new BigDecimal("100");
		// multiply实现乘法运算
		BigDecimal bigMul = big7.multiply(big8);
		System.out.println(bigMul);

		BigDecimal big9 = new BigDecimal("1.301");
		BigDecimal big10 = new BigDecimal("100");
		// 除法运算
		BigDecimal bigDiv = big9.divide(big10, 2, BigDecimal.ROUND_DOWN);
		System.out.println(bigDiv);

	}

}

123456789024691357802469135780
123456789000000000000000000000
1524157875323883675034293577501905199875019052100
10000000000
-----------
0.09999999999999999
0.6799999999999999
101.49999999999999
0.013009999999999999
-----------
0.10
0.68
110.500
0.01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值