Java-BigDecimal类,BigInteger类

本文介绍Java中用于处理高精度计算的两大类:BigDecimal用于浮点数的精确计算,BigInteger用于超出基本类型范围的大整数计算。文章通过示例代码展示了这两个类的构造方法及常用操作如加、减、乘、除等。

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

一.BigDecimal类

对于浮点类型的数据类说,他们存储和整数的存储是不一致的,是按照有效数字位来进行存储的,浮点类型的数据计算的时候容易损失精度,计算出来的结果不精确,Java针对这种情况:提供了这个BigDecimal:

作用:来提供浮点类型数据的精确计算!可变的,任意精度的符号十进制数.

构造方法:

public BigDecimal(String val);

常用的成员方放:

public BigDecimal add(BigDecimal augend):加

public BigDecimal subtract(BigDecimal subtrahend):减

public BigDecimal multiply(BigDecimal multipliend):乘法

public BigDecimal divide(BigDecimal divisor):除

public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):参数1:商,参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP

相关代码:

import java.math.BigDecimal;

public class BigDecimalDemo {
		
		public static void main(String[] args) {
			BigDecimal b1=new BigDecimal("0.47");
			BigDecimal b2=new BigDecimal("0.11");
			//相加
			System.out.println("add:"+b1.add(b2));
			//相减
			System.out.println("subtract:"+b1.subtract(b2));
			//相乘
			System.out.println("multiply:"+b1.multiply(b2));
			//除
			System.out.println("divide:"+b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP));
		}
	
}
结果为:add:0.58
subtract:0.36
multiply:0.0517
divide:4.2727

二.BigInteger类

BigInteger:用来计算超出了Integer类型范围的数据.

构造方法:

public BigInteger(String val):将字符串表示的数字封装成BigInteger类型.

成员方法:

public BigInteger add(BigInteger val):加

public BigInteger subtract(BigInteger val):减

public BigInteger multiply(BigInteger val):乘

public BigInteger divide(BigInteger val):除

public BigInteger[ ] divideAndRemainder(BigInteger val):返回一个BigInteger数组,元素为:商和余数.

相关代码:

import java.math.BigInteger;
import java.util.Arrays;

public class BigIntegerDemo {
	public static void main(String[] args) {
		BigInteger b1=new BigInteger("20");
		BigInteger b2=new BigInteger("10");
		//加
		System.out.println("add:"+b1.add(b2));
		//减
		System.out.println("subtract:"+b1.subtract(b2));
		//乘
		System.out.println("multiply:"+b1.multiply(b2));
		//除
		System.out.println("divide:"+b1.divide(b2));
		BigInteger b3=new BigInteger("3");
		System.out.println("divideAndRemainder:"+Arrays.toString(b1.divideAndRemainder(b3)));
		
	}
}
结果为:
add:30
subtract:10
multiply:200
divide:2
divideAndRemainder:[6, 2]


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值