BigDecimal类的使用

BigDecimal类的使用:

一.简介
BigDecimal类位于java.math.BigDecimal包下。使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入,这一点在开发中经常使用。

对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算结果,则必须使用BigDecimal类。

1,构造器描述
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。//推荐使用

doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。

这里,需要注意的是除法的问题,divide的第二个参数设置为精度,第三个参数设置的取舍问题,默认是四舍五入。

 BigDecimal b = new BigDecimal("15.8999");
        BigDecimal c= new BigDecimal("3.24");
        BigDecimal d= new BigDecimal("-5.12");

        System.out.println(b.add(c)); //加法
        System.out.println(b.subtract(c));//减法
        System.out.println(b.multiply(c));//乘法

        //保留小数点后两位,采取5以及5以下都别舍弃
        System.out.println(b.divide(c,2,BigDecimal.ROUND_HALF_DOWN));

        System.out.println(b.remainder(c));//求余数
        System.out.println(b.max(c));//求两数最大的数
        System.out.println(b.min(c));//求两数最小的数
        System.out.println(d.abs());//求一个数的绝对值
        System.out.println(c.negate());//求一个数的相反数

在这里插入图片描述

这里注意的是,在除数除不尽的情况下,没有设置第二,三个参数,会报错。
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represen

二,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则向下舍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BigDecimal是Java中用来处理高精度数值计算的。它可以处理任意精度的小数,避免了使用double或float型时可能遇到的精度问题。 以下是使用BigDecimal的一些基本操作: 1. 创建BigDecimal对象 可以通过以下方式创建BigDecimal对象: ``` BigDecimal num = new BigDecimal("123.456"); ``` 2. 四则运算 可以使用add、subtract、multiply、divide方法进行加、减、乘、除运算,例如: ``` BigDecimal num1 = new BigDecimal("123.456"); BigDecimal num2 = new BigDecimal("789.012"); BigDecimal result1 = num1.add(num2); // 加法 BigDecimal result2 = num1.subtract(num2); // 减法 BigDecimal result3 = num1.multiply(num2); // 乘法 BigDecimal result4 = num1.divide(num2, 2, RoundingMode.HALF_UP); // 除法,保留两位小数,四舍五入 ``` 3. 比较大小 可以使用compareTo方法比较两个BigDecimal对象的大小,例如: ``` BigDecimal num1 = new BigDecimal("123.456"); BigDecimal num2 = new BigDecimal("789.012"); int result = num1.compareTo(num2); if (result > 0) { System.out.println("num1 > num2"); } else if (result < 0) { System.out.println("num1 < num2"); } else { System.out.println("num1 = num2"); } ``` 4. 转换为其他型 可以使用toXXX方法将BigDecimal对象转换为其他型的数值,例如: ``` BigDecimal num = new BigDecimal("123.456"); int i = num.intValue(); // 转换为int型 double d = num.doubleValue(); // 转换为double型 ``` 以上是BigDecimal的一些基本操作,还有很多其他方法可以参考Java官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值