BigDecimal的精度问题以及BigDecimal的加减乘除运算

BigDecimal的精度问题以及BigDecimal的加减乘除运算

1.先说BigDecimal 的加减乘除运算

​ 1).加法

(示例)
	  //定义 bigdecimal 类型数 numOne 其值大小为10
       BigDecimal numOne = new BigDecimal("10");

        //定义 bigdecimal 类型数 numTwo 其值大小为20
        BigDecimal numTwo = new BigDecimal("20");

        //此处为加法计算
        BigDecimal sum = numOne.add(numTwo);

        //将结果转为double类型
        double sumDoubleValue = sum.doubleValue();

        //将结果转为int类型  除此之外 还有long类型  float类型 ...
        long sumIntvalue = sum.longValue();

        System.out.println(sumDoubleValue);
        System.out.println(sumIntvalue);

​ 2)减法

 		//定义 bigdecimal 类型数 numSubtractOne 其值大小为10
        BigDecimal numSubtractOne = new BigDecimal("10");

        //定义 bigdecimal 类型数 numSubtractTwo 其值大小为20
        BigDecimal numSubtractTwo = new BigDecimal("20");

        //减法计算
        BigDecimal subtractValue = numSubtractOne.subtract(numSubtractTwo);

		//控制输出 double 类型的结果
        System.out.println(subtractValue.doubleValue());

3)乘法

        //定义 bigdecimal 类型数 numMultityOne 其值大小为10
        BigDecimal numMultiplyOne =  new BigDecimal("10");

        //定义 bigdecimal 类型数 numMultityTwo 其值大小为20
        BigDecimal numMultiplyTwo = new BigDecimal("20");

        //乘法结果
        BigDecimal multiplyValue = numMultiplyOne.multiply(numMultiplyTwo);

        //控制台输出结果
        System.out.println(multiplyValue.doubleValue());

4)除法

        //定义 bigdecimal 类型数 numDivideOne 其值大小为10
        BigDecimal numDivideOne =  new BigDecimal("10");

        //定义 bigdecimal 类型数 numDivideTwo 其值大小为20
        BigDecimal numDivideTwo = new BigDecimal("20");

        //除法结果
        BigDecimal divide = numDivideOne.divide(numDivideTwo);

        //控制台输出结果
        System.out.println(divide.doubleValue());

2.BigDecimal的精度问题

​ 对于BigDecimal 的精度保留需要用到DecimalFormat模板 先看示例:

(示例)
		//小数点后保留两位,整数位没有数据保留0
        DecimalFormat tamplet = new DecimalFormat("0.00");

        //想要处理小数点的数据
        double numDoubleValue = 5.511651616;

        //小数点后保留两位后的数据
        String value = tamplet.format(numDoubleValue);
        
        //此处将string类型转换为你想要的类型 比如 double 
        Double aDoubleValue = Convert.toDouble(value);
        //输出打印
        System.out.println(aDoubleValue);

对于模板除了"0.00"之外还有很多

例如:"#.00" ,“00.00”,“0.000”…

“#.00”:
表示小数后保留两位,个位如果没有值就忽略.举个例子当你对 0.233 使用这个模板时,那么输出的结果就是".23" 个位的0不见了,那是因为 # 的缘故.如果个位的数值没有时会被忽略掉.

但"0.00"
这个模板就是个位的数值没有时补0.使用这个模板对0.233进行小数处理时,那么输出的结果就是"0.23",可见0的作用是放在某一个数位上,当这个数位没有数值时会补0

假如 我们用"00.000"这个模板对 1.22 这个数进行处理.那么输出的结果就是 “01.220”

以上可以总结出
0是用于补 0 操作.当模板小数后有几个0 那么就相当于保留几位数字.

#可理解为占位 当有数值时就显示,没有数值时就忽略.但只能放小数的末尾或者整数的最高位

猜你喜欢

转载自blog.csdn.net/m0_51285952/article/details/119418787
今日推荐