我是靠谱客的博主 会撒娇芒果,最近开发中收集的这篇文章主要介绍BigDecimal的简单使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BigDecimal一共有4个构造方法:

BigDecimal(int) 创建一个具有参数所指定整数值的对象

BigDecimal(double) 创建一个具有参数所指定双精度值的对象(不建议采用)

BigDecimal(long) 创建一个具有参数所指定长整数值的对象。

BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象 

在创建时,必须要提醒大家注意的是,在这里,括号中的参数一定要使用字符串,而不能是浮点值(虽然也支持浮点类型的参数)。这是因为在计算机中,浮点值是不精确的。你写入一个 1,很可能在内部实际保存的是 1.00000001。而字符串则不同,它是可以精确表示的。

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        BigDecimal bInt = new BigDecimal(1);
        BigDecimal bString = new BigDecimal("1.2");
        BigDecimal bDouble = new BigDecimal(1.2);
        System.out.println("bString" + bString);
        System.out.println("bDouble" + bDouble);
    }
}

当double必须用作BigDecimal的源时,请使用Double.toString(double)转成String,然后使用String构造方法,或使用BigDecimal的静态方法valueOf,如下:

BigDecimal bigDecimal = new BigDecimal(Double.toString(1.2));
BigDecimal bigDecimal = BigDecimal.valueOf(1.2);

 BigDecimal对货币和百分比格式化

public class Test {
    public static void main(String[] args) {
        BigDecimal bigLoanAmount = new BigDecimal("1234567890");   //创建BigDecimal对象
        BigDecimal bigInterestRate = new BigDecimal("10.1234467");

        NumberFormat currency = NumberFormat.getCurrencyInstance();    //建立货币格式化引用

        NumberFormat percent = NumberFormat.getPercentInstance();     //建立百分比格式化用

        percent.setMaximumFractionDigits(3);               //百分比小数点最多3位

        //利用BigDecimal对象作为参数在format()中调用货币和百分比格式化

        System.out.println("Loan amount:t" + currency.format(bigLoanAmount));

        System.out.println("Interest rate:t" + percent.format(bigInterestRate));
    }
}

 

 BigDecimal加减乘除运算

public BigDecimal add(BigDecimal value); //加法

public BigDecimal subtract(BigDecimal value); //减法

public BigDecimal multiply(BigDecimal value); //乘法

public BigDecimal divide(BigDecimal value); //除法

例子:

public class Test {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");   //创建BigDecimal对象
        BigDecimal b = new BigDecimal("20");
        System.out.println("加法:" + a.add(b));
        System.out.println("减法:" + a.subtract(b));
        System.out.println("除法:" + a.divide(b));
        System.out.println("乘法:" + a.multiply(b));
    }
}

需要注意的divide除法,可能会出现4.5/1.3,这时用上面的方法会报错java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

这时我们可以用divide的其他重载的方法,divide方法有可以传三个参数:public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 第一参数表示除数, 第二个参数表示小数点后保留位数,第三个参数表示舍入模式,只有在作除法运算或四舍五入时才用到舍入模式,有下面这几种:

ROUND_CEILING //向正无穷方向舍入
ROUND_ROWN //向零方向舍入
ROUND_FLOOR //向负无穷方向舍入
ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边的距离是相等的,如果是这样,向下舍入,例如1.55 保留一位小数位1.5
ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边的距离是相等的,如果是这样,如果保留位数是奇数,是用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边的距离是相等的,如果是这样,向上舍入,1.55保留一位小数结果为1.6
ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式
ROUND_UP //向远离0的方向舍入

 

 

最后

以上就是会撒娇芒果为你收集整理的BigDecimal的简单使用的全部内容,希望文章能够帮你解决BigDecimal的简单使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部