BigDecimal的常见用法

1、BigDecimal类简介

BigDecimal是java.math包中的一个不可变的、任意精度的有符号十进制数。它提供了对数值的精确控制,非常适合财务和科学计算。BigDecimal类可以表示非常大的数或非常小的数,同时支持任意精度的小数点位置。

2、BigDecimal的构造方法

BigDecimal类提供了多种构造方法,允许我们从字符串、双精度浮点数(double)或长整型数(long)创建BigDecimal实例。其中,从字符串创建BigDecimal实例是最推荐的方式,因为它可以避免由于浮点数的舍入误差而导致的不精确性。

3、BigDecimal的数学运算

BigDecimal a = new BigDecimal("80");
BigDecimal b = new BigDecimal("50.50");

1、加法 a.add(b)

2、减法 a.subtract(b)

3、乘法 a.multiply(b)

4、除法 a.divide(b, scale, roundingMode)。这里,scale指定结果的小数点后位数,roundingMode指定舍入模式。

5、求余数 a.remainder(b)

4、示例代码与测试

import java.math.BigDecimal;
import java.math.RoundingMode;
 
public class BigDecimalExample {
 
    @Test
    public void test1(){//加法 add
        BigDecimal a = new BigDecimal("80");
        BigDecimal b = new BigDecimal("50");
        //结果:130
        System.out.println("a + b = " + a.add(b));
    }
 
    @Test
    public void test2(){//减法 subtract
        BigDecimal a = new BigDecimal("80");
        BigDecimal b = new BigDecimal("50");
        //结果:30
        System.out.println("a - b = " + a.subtract(b));
    }
 
    @Test
    public void test3(){//乘法 multiply
        BigDecimal a = new BigDecimal("80");
        BigDecimal b = new BigDecimal("50");
        //结果:4000
        System.out.println("a * b = " + a.multiply(b));
    }
 
    @Test
    public void test4(){//除法 divide
        BigDecimal a = new BigDecimal("99.99");
        BigDecimal b = new BigDecimal("5");
        //结果:20.00(保留两位小数,四舍五入)
        System.out.println("a / b = " + a.divide(b, 2, RoundingMode.HALF_UP));
    }
 
    @Test
    public void test5(){//余数运算 使用remainder方法进行求余数运算
        BigDecimal a = new BigDecimal("10");
        BigDecimal b = new BigDecimal("3");
        //结果:1
        System.out.println("a % b = " + a.remainder(b));
    }
}

5、总结

BigDecimal类是Java中处理高精度数值运算的强大工具。它允许我们执行精确的数学运算,避免了浮点数的舍入误差。在金融和科学计算等需要高精度的场合中,BigDecimal类是不可或缺的。通过合理使用BigDecimal的构造方法和数学运算方法,我们可以确保我们的计算结果是准确且可靠的。

希望这篇博客能帮助你更好地理解Java中的BigDecimal类及其精确数学运算。如果你有任何问题或需要进一步的解释,请随时留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值