2021-12-22

 BigDecimal用法

1.为什么用?

float与double运算时会丢失精度(为什么会丢失精度?)

2.BigDecimal是啥?

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

3.用法:

构造器描述

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

BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用

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

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

方法描述

add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。

subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。

multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。

divide(BigDecimal)    BigDecimal对象中的值相除,然后返回这个对象。

toString()                将BigDecimal对象的数值转换成字符串。

doubleValue()          将BigDecimal对象中的值以双精度数返回。

floatValue()            将BigDecimal对象中的值以单精度数返回。

longValue()            将BigDecimal对象中的值以长整数返回。

intValue()              将BigDecimal对象中的值以整数返回。

加减乘除:


进行除法运算时,如果有余数会报错,报java.lang.ArithmeticException:

在进行除法操作时,设置保留小数位和舍入模式

舍入模式

ROUND_CEILING    //向正无穷方向舍入

ROUND_DOWN    //向零方向舍入

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的compareTo方法使用:

public static void main(String[] args) {

    BigDecimal bnum1, bnum2;

    bnum1 = new BigDecimal("10");

    bnum2 = new BigDecimal("20");

    int res = bnum1.compareTo(bnum2);

    String str1 = "两个数相等";

    String str2 = "第一个数更大";

    String str3 = "第二个数更大";

    if( res == 0 )

        System.out.println( str1 );

    else if( res == 1 )

        System.out.println( str2 );

    else if( res == -1 )

        System.out.println( str3 );

    }

}

版权声明:本文为CSDN博主「这辈子_安静的努力着」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_35868412/article/details/89029288

原文链接:https://blog.csdn.net/qq_35868412/article/details/89029288

你可能感兴趣的:(2021-12-22)