java Bigdecimal的加减乘除运算及保留小数位

本文介绍了Java中BigDecimal类的使用,包括通过构造方法创建BigDecimal对象,以及进行加减乘除四则运算。示例代码展示了如何进行运算并打印结果。此外,还探讨了如何保留小数位,使用DecimalFormat格式化输出以及BigDecimal的setScale方法进行四舍五入处理,演示了不同舍入模式下的小数处理。
摘要由CSDN通过智能技术生成

一、运算

java.math.BigDecimal。BigDecimal一共有多种够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)

第二种:BigDecimal(String val)  //通常采用这种方式

来看看BigDecimal的四则运算:

BigDecimal的四则运算
加法bigDecimal1.add(bigDecimal2)
减法bigDecimal1.subtract(bigDecimal2)
乘法bigDecimal1.multiply(bigDecimal2)
除法bigDecimal1.divide(bigDecimal2)

代码:

/**
	 * 加减乘除
	 */
	@Test
	public void BigdecimalTest1(){
		BigDecimal bignum1 = new BigDecimal("10"); 
		BigDecimal bignum2 = new BigDecimal("5"); 
		BigDecimal bignum3 = null; 
		   
		//加法 
		bignum3 =  bignum1.add(bignum2);      
		System.out.println("和 是:" + bignum3); 
		   
		//减法 
		bignum3 = bignum1.subtract(bignum2); 
		System.out.println("差  是:" + bignum3); 
		   
		//乘法 
		bignum3 = bignum1.multiply(bignum2); 
		System.out.println("积  是:" + bignum3); 
		   
		//除法 
		bignum3 = bignum1.divide(bignum2); 
        System.out.println("余  是:" + bignum3); 
	}

结果:

和 是:15
差  是:5
积  是:50
余  是:2

二、保留小数位

/**
	 * 对小数的处理
	 */
	@Test
	public void BigdecimalTest2(){
		DecimalFormat   df   =new  DecimalFormat("#.00"); //格式化两位有效数字,四舍五入的
		System.out.println(df.format(3.1415926));
		
		//通过setScale()方法
		/**
		 * BigDecimal.setScale()方法用于格式化小数点
			setScale(1)表示保留一位小数,默认用四舍五入方式 
			setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
			setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
			setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
			setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
		 */
		double   f   =   111231.5585; 
		BigDecimal   b   =   new   BigDecimal(f); 
		double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue(); //保留2位小数
		System.out.println(f1);
		
		
		//除法保留两位小数
		BigDecimal b1 = new BigDecimal("1"); 
		BigDecimal b2 = new BigDecimal("3"); 
        System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));
	}

结果:

3.14
111231.56
0.33

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 使用BigDecimal进行加减乘除运算时,可以使用setScale方法设置保留小数位数。例如: BigDecimal a = new BigDecimal("1.2345"); BigDecimal b = new BigDecimal("2.3456"); // 加法 BigDecimal c = a.add(b).setScale(2, BigDecimal.ROUND_HALF_UP); // 减法 BigDecimal d = a.subtract(b).setScale(2, BigDecimal.ROUND_HALF_UP); // 乘法 BigDecimal e = a.multiply(b).setScale(2, BigDecimal.ROUND_HALF_UP); // 除法 BigDecimal f = a.divide(b, 2, BigDecimal.ROUND_HALF_UP); 其中,setScale方法的第一个参数表示保留小数位数,第二个参数表示舍入模式。ROUND_HALF_UP表示四舍五入。 ### 回答2: Bigdecimal是在计算机科学中非常重要的一个类,可以处理高精度的十进制小数,它的精度可以达到几百位甚至上千位,而且不会产生精度误差。在进行加减乘除运算时,也需要注意保留小数点后几位,避免出现误差。 在Java中,我们可以使用Bigdecimal类来进行高精度计算。要想对Bigdecimal进行加减乘除运算保留两位小数,可以采用如下步骤: 1. 创建Bigdecimal对象,设置初始值。 例如: BigDecimal a = new BigDecimal("1.235"); 2. 进行加减乘除运算,使用相应的方法。 例如: BigDecimal b = new BigDecimal("2.345"); BigDecimal c = a.add(b); // 加法运算 BigDecimal d = a.subtract(b); // 减法运算 BigDecimal e = a.multiply(b); // 乘法运算 BigDecimal f = a.divide(b, 2, BigDecimal.ROUND_HALF_UP); // 除法运算,保留两位小数 3. 使用setScale()方法设置保留小数点后几位数。 例如: BigDecimal g = new BigDecimal("3.14"); BigDecimal h = g.setScale(2, BigDecimal.ROUND_HALF_UP); // 保留两位小数 以上就是Bigdecimal加减乘除运算保留两位小数的方法。需要注意的是,在进行除法运算时,我们需要指定保留小数点后的位数和舍入方式。BigDecimal提供了多种舍入方式,其中ROUND_HALF_UP舍入模式可以保证四舍五入。保留小数点后几位数的设置,可以使用setScale()方法来实现。 ### 回答3: BigDecimalJava平台提供的高精度计算类,它可以用于对超出Java原生数据类型表示范围的数字进行运算。BigDecimal加减乘除运算可以使用其提供的方法,例如add()、subtract()、multiply()和divide()等。在进行这些运算时,需要指定运算过程中要用到的位数,特别是小数点后的位数,以保证结果的精度和正确性。 在进行BigDecimal运算时,为了保留两位小数,可以使用setScale()方法设置小数点后的位数。如下所示: BigDecimal a = new BigDecimal("3.1415926"); BigDecimal b = new BigDecimal("2.718"); BigDecimal result = a.divide(b, 2, RoundingMode.HALF_UP); 在上述示例中,a和b都是BigDecimal类型的数字,其中a表示圆周率π,b表示自然常数e。使用divide()方法计算a与b的商,在设置小数点后保留两位,并使用HALF_UP舍入模式将小数点后第三位四舍五入。最终,result表示π÷e的值,保留两位小数为1.15。 当进行多个BigDecimal加减乘除运算时,需要将结果赋值给新的BigDecimal对象,以避免因前一个运算的结果而引起的精度损失。同时,还需要注意BigDecimal对象的构造方法中需要传入字符串参数,而非double类型的数字,以避免精度丢失。 总之,通过使用BigDecimal类的add()、subtract()、multiply()和divide()方法,同时设置setScale()方法指定小数点后的位数,可以进行BigDecimal加减乘除运算,并保留指定位数的小数。这样可以确保结果的精确性和正确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwzhouzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值