我是靠谱客的博主 热情便当,最近开发中收集的这篇文章主要介绍BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BigDecimal的初始化

1、使用字符串 2、直接写数字

		BigDecimal b1 = new BigDecimal(0.005);
        BigDecimal b2 = new BigDecimal(1000000);
        BigDecimal b3 = new BigDecimal(-1000000);
        //尽量用字符串的形式初始化※
        BigDecimal b11 = new BigDecimal("0.005");
        BigDecimal b22 = new BigDecimal("1000000");
        BigDecimal b33 = new BigDecimal("-1000000");

两种初始化对比结果:
在这里插入图片描述

※注意:使用Integer会丢失精度,这是为什么建议使用String来进行初始化的原因

BigDecimal四则运算法则

		BigDecimal b1 = new BigDecimal(1);
        BigDecimal b2 = new BigDecimal(2);
操作公式
加法b1.add(b2)
减法b1.subtract(b2)
乘法b1.multiply(b2)
除法b1.divide(b2)

加法add()

		//创建一个BigDecimal对象
        BigDecimal b1 = new BigDecimal(1);
        BigDecimal b2 = new BigDecimal(2);
        BigDecimal add = b1.add(b2);

注意:必须使用一个变量接收, 详情如下:

1、没有使用变量介绍的例子
在这里插入图片描述
2、使用变量接收
在这里插入图片描述

减法subtract()

        BigDecimal subtract= b1.subtract(b2); 

乘法multiply()

        BigDecimal multiply = b1.multiply(b2); 

除法divide()

计算机得出结果:
在这里插入图片描述

       BigDecimal b1 = new BigDecimal(17);
        BigDecimal b2 = new BigDecimal(7);
        //舍入远离零的舍入模式(始终对非零舍弃部分前面的数字加1)
        BigDecimal divide1 = b1.divide(b2,3,BigDecimal.ROUND_UP);
        
        //接近零的舍入模式。(从不对舍弃部分前面的数字加1,即截短)
        BigDecimal divide2 = b1.divide(b2,2,BigDecimal.ROUND_DOWN);
        
        /** 
         * 接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;
         * 如果为负,则舍入行为与 ROUND_DOWN 相同。
         * 注意,此舍入模式始终不会减少计算值。
        */
        BigDecimal divide3 = b1.divide(b2,2,BigDecimal.ROUND_CEILING);
        
        /**
         * 接近负无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;
         * 如果为负,则舍入行为与 ROUND_UP 相同。
         * 注意,此舍入模式始终不会增加计算值。
         */
        BigDecimal divide4 = b1.divide(b2,2,BigDecimal.ROUND_FLOOR);
        
        //四舍五入
        BigDecimal divide5 = b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);
        
        //向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。
        BigDecimal divide6 = b1.divide(b2,2,BigDecimal.ROUND_HALF_DOWN);
        
        //向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
        BigDecimal divide7 = b1.divide(b2,2,BigDecimal.ROUND_HALF_EVEN);
        /**
         * 断言请求的操作具有精确的结果,因此不需要舍入。
         * 如果对获得精确结果的操作指定此舍入模式,则抛出ArithmeticException。
         * 此模式下对于结果为无限小数的情况下会报错
         */
//        BigDecimal divide8 = b1.divide(b2,2,BigDecimal.ROUND_UNNECESSARY);

结果:
在这里插入图片描述

BigDecimal比较大小

		BigDecimal a = new BigDecimal(10);
        BigDecimal b = new BigDecimal(5);
        if (a.compareTo(b) == 0){
            System.out.println("a = b");
        }
        if (a.compareTo(b) == -1){
            System.out.println("a < b");
        }
        if (a.compareTo(b) == 1){
            System.out.println("a > b");
        }
        if (a.compareTo(b) != 0){
            System.out.println("a != b");
        }
        if (a.compareTo(b) != -1){
            System.out.println("a >= b");
        }
        if (a.compareTo(b) != 1){
            System.out.println("a <= b");
        }

stripTrailingZeros()方法:去掉末尾0

		BigDecimal bigDecimal = new BigDecimal("5.00000000");
        System.out.println("不去掉零之前------->"+bigDecimal);
        System.out.println("抹零------->"+bigDecimal.stripTrailingZeros());

运行结果:
在这里插入图片描述

toPlainString() 方法:转为普遍计数法输出

		//科学计数法
		BigDecimal bd = new BigDecimal("1.238761976E-10");
        System.out.println(bd.toPlainString());

结果:
在这里插入图片描述

最后

以上就是热情便当为你收集整理的BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出的全部内容,希望文章能够帮你解决BigDecimal的加减乘除运算,以及一些常用方法stripTrailingZeros()...&&大小比较&&踩坑之路。。。。BigDecimal的初始化BigDecimal四则运算法则加法add()减法subtract()乘法multiply()除法divide()BigDecimal比较大小stripTrailingZeros()方法:去掉末尾0toPlainString() 方法:转为普遍计数法输出所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部