(Java)常用API(四)大数据运算

本文详细介绍了在Java中如何使用BigInteger和BigDecimal类进行大整数和高精度浮点数的运算,包括加减乘除等基本运算方法,并展示了如何避免计算机二进制表示浮点数不精确的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【BigInteger】


import java.math.BigInteger;

/*
 * 超级大的整数运算
 *   超过long的取值范围整数,需要封装成BigInteger类型对象
 *   它们的四则运算都是通过方法来实现的
 * 
 */
public class BigIntegerDemo1 {
	public static void main(String[] args) {
		function_2();
	}
	/*
	 * BigInteger类的构造方法
	 *     传递字符串,要求数字格式,没有长度限制
	 */
	public static void function_1(){
		BigInteger b = new BigInteger("12345678901234567890123456789");
		System.out.println(b);
	}
	
	/*
	 * 四则运算
	 * 
	 */
	public static void function_2(){
		BigInteger b1 = new BigInteger("12345678901234567890123456789");
		BigInteger b2 = new BigInteger("12345678901234567890123456789");
		
		//1.加法运算,调用方法add
		BigInteger bigadd = b1.add(b2);
		System.out.println(bigadd);
		
		//2.减法运算,调用方法subtract
		BigInteger bigsub = b1.subtract(b2);
		System.out.println(bigsub);
		
		//3.乘法运算,调用方法multiply
		BigInteger bigmul = b1.multiply(b2);
		System.out.println(bigmul);
		
		//4.除法运算,调用方法divide
		BigInteger bigdiv = b1.divide(b2);
		System.out.println(bigdiv);
	}

}

【BigDecimal类】

import java.math.BigDecimal;

public class BigDecimalDemo1 {
	public static void main(String[] args) {
		
		function_2();
		// 造成结果原因:计算机二进制中表示浮点数不精确造成的
		//System.out.println(0.09 + 0.01);  // 0.09999999999999999
		//System.out.println(1.0 - 0.32);   // 0.6799999999999999
		//System.out.println(1.015 * 100);  // 101.49999999999999
		//System.out.println(1.301 / 100);  // 0.013009999999999999
	}
	
	/*
	 * 超大型的浮点数据,提供高精度放入浮点运算  BigDecimal
	 * 
	 * BigDecimal 实现三则运算  + - * 
	 * 
	 */
	public static void function_1(){
		BigDecimal b1 = new BigDecimal("0.09");
		BigDecimal b2 = new BigDecimal("0.01");
		//1.求和,调用add方法
		BigDecimal bigadd = b1.add(b2);
		System.out.println(bigadd);             // 0.10
		
		BigDecimal b3 = new BigDecimal("1.0");
		BigDecimal b4 = new BigDecimal("0.32");
		//2.减法,调用subtract方法
		BigDecimal bigsub = b3.subtract(b4);
		System.out.println(bigsub);             // 0.68
		
		BigDecimal b5 = new BigDecimal("1.015");
		BigDecimal b6 = new BigDecimal("100");
		//3.减法,调用subtract方法
		BigDecimal bigmul = b5.multiply(b6);
		System.out.println(bigmul);             // 101.500
		
	}
	
	/* BigDecimal实现除法运算
	 *   divide(BigDecimal divisor, int scale, int roundingMode)
	 *       int scale: 保留几位小数
	 *       int roundingMode: 保留模式
	 *          static int ROUND_UP   向上+1
	 *          static int ROUND_DOWN     直接舍去
	 *          static int ROUND_HALF_UP   >= 0.5 向上+1
	 *          static int ROUND_HALF_DOWN   >0.5 向上+1,否则舍去 
	 */
	public static void function_2(){
		BigDecimal b1 = new BigDecimal("1.103");
		BigDecimal b2 = new BigDecimal("100");  //0.01303
		
		BigDecimal bigdivi = b1.divide(b2,2,BigDecimal.ROUND_UP);
		System.out.println(bigdivi);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值