BigDecimal的基本操作

本文详细介绍了BigDecimal类在Java中的基本操作,包括加法、减法、乘法、除法以及获取绝对值的方法。同时,通过实例演示了不同舍入模式如ROUND_HALF_UP、ROUND_DOWN等在四舍五入操作中的应用,帮助理解其工作原理和差异。
摘要由CSDN通过智能技术生成

工具类代码:

package com.ykl.studyMaterials.util;

import java.math.BigDecimal;

/**
 * BigDecimal的基本操作
 * 
 * @author ykl
 *
 */
public class BigDecimalUtil {

	public static void main(String[] args) {
		// 注:初始化一般使用String
		BigDecimal num1 = new BigDecimal("32.6");
		BigDecimal num2 = new BigDecimal("3.8");
		BigDecimal num3 = new BigDecimal("-2.35");
		BigDecimal num4 = new BigDecimal("3.141590654");
		BigDecimal num5 = new BigDecimal("-3.141590654");
		
		// 加法
		BigDecimal addRes = num1.add(num2);
		System.out.println("加法add(32.6+3.8)=" + addRes);
		
		// 减发
		BigDecimal subRes = num1.subtract(num2);
		System.out.println("减法subtract(32.6-3.8)=" + subRes);
		
		// 乘法
		BigDecimal mulRes = num1.multiply(num2);
		System.out.println("乘法multiply(32.6*3.8)=" + mulRes);
		
		// 除法
		BigDecimal divRes = num1.divide(num2, 6, BigDecimal.ROUND_HALF_UP);
		System.out.println("除法divide(32.6/3.8)=" + divRes);
		
		// 绝对值
		BigDecimal absRes = num3.abs();
		System.out.println("绝对值(-2.35)" + absRes);
		
		// 四舍五入
		int scale = num4.scale();
		System.out.println("小数位数(3.141590654):" + scale);
		BigDecimal scaRes = null;
		// ROUND_UP  对非零舍弃部分前面的数字加1
		scaRes = num4.setScale(2, BigDecimal.ROUND_UP);
		System.out.println("ROUND_UP:" + scaRes);
		// ROUND_DOWN  截取小数位,不对保留位数处理
		scaRes = num4.setScale(2, BigDecimal.ROUND_DOWN);
		System.out.println("ROUND_UP:" + scaRes);
		// ROUND_CEILING  如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同
		scaRes = num4.setScale(2, BigDecimal.ROUND_CEILING);
		System.out.println("ROUND_CEILING(正):" + scaRes);
		scaRes = num5.setScale(2, BigDecimal.ROUND_CEILING);
		System.out.println("ROUND_CEILING(负):" + scaRes);
		// ROUND_FLOOR  如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同
		scaRes = num4.setScale(2, BigDecimal.ROUND_FLOOR);
		System.out.println("ROUND_FLOOR(正):" + scaRes);
		scaRes = num5.setScale(2, BigDecimal.ROUND_FLOOR);
		System.out.println("ROUND_FLOOR(负):" + scaRes);
		// ROUND_HALF_UP 四舍五入(舍弃部分>=0.5时加1)
		scaRes = num4.setScale(2, BigDecimal.ROUND_HALF_UP);
		System.out.println("ROUND_HALF_UP:" + scaRes);
		// ROUND_HALF_DOWN 舍弃部分>0.5时加1
		scaRes = num4.setScale(2, BigDecimal.ROUND_HALF_DOWN);
		System.out.println("ROUND_HALF_DOWN:" + scaRes);
		// ROUND_HALF_EVEN 如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同;例:1.15>1.2 1.25>1.2
		scaRes = num4.setScale(2, BigDecimal.ROUND_HALF_EVEN);
		System.out.println("ROUND_HALF_EVEN:" + scaRes);
		// ROUND_UNNECESSARY 断言请求的操作具有精确的结果,因此不需要舍入(运算结果为无限小数的情况下会报错)
		scaRes = num4.setScale(9, BigDecimal.ROUND_UNNECESSARY);
		System.out.println("ROUND_UNNECESSARY:" + scaRes);
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值