zoukankan      html  css  js  c++  java
  • java基础-BigDecimal类常用方法介绍

                  java基础-BigDecimal类常用方法介绍

                                      作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.BigDecimal类概述

       我们知道浮点数的计算结果是未知的。原因是计算机二进制中,表示浮点数不精确造成的。这个时候你需要一个超级大型的浮点数据,并且提供高精度的浮点运算,也就是我们要说的BigDecimal。

      不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。

      BigDecimal 类使用户能完全控制舍入行为。如果未指定舍入模式,并且无法表示准确结果,则抛出一个异常;否则,通过向该操作提供适当的 MathContext 对象,可以对已选择的精度和舍入模式执行计算。在任何情况下,可以为舍入控制提供八种舍入模式。使用此类(例如,ROUND_HALF_UP)中的整数字段来表示舍入模式已过时;应改为使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚举值。  

      

    二.BigDecimal类实现加法,减法和乘法的案例展示

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 package cn.org.yinzhengjie.demo;
     8 
     9 import java.math.BigDecimal;
    10 
    11 public class BigDecimalDemo {
    12     public static void main(String[] args) {
    13         function();
    14     }
    15     
    16     public static void function() {
    17         BigDecimal a = new BigDecimal("0.009");
    18         BigDecimal b = new BigDecimal("0.001");
    19         //计算a+b的和,调用add方法
    20         BigDecimal sum = a.add(b);
    21         System.out.println(sum);
    22         
    23         BigDecimal x = new BigDecimal("1.1");
    24         BigDecimal y = new BigDecimal("0.28");
    25         BigDecimal sub = x.subtract(y);
    26         System.out.println(sub);
    27         
    28         BigDecimal m = new BigDecimal("3.14");
    29         BigDecimal n = new BigDecimal("100");
    30         BigDecimal mul = m.multiply(n);
    31         System.out.println(mul);
    32     }
    33 }
    34 
    35 
    36 
    37 /*
    38 以上代码执行结果如下:
    39 0.010
    40 0.82
    41 314.00
    42 */

    三.BIgDecimal类实现除法

     1 /*
     2 @author :yinzhengjie
     3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
     4 EMAIL:y1053419035@qq.com
     5 */
     6 
     7 package cn.org.yinzhengjie.demo;
     8 
     9 import java.math.BigDecimal;
    10 
    11 public class BigDecimalDemo {
    12     public static void main(String[] args) {
    13         function();
    14     }
    15     
    16     public static void function() {
    17         BigDecimal a = new BigDecimal("9.8");
    18         BigDecimal b = new BigDecimal("3");
    19         //计算a/b的商,调用divied方法,
    20 //        BigDecimal div = a.divide(b);    //如果除不尽的话会抛出异常:java.lang.ArithmeticException。
    21 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_UP);    //保留三位小数,向上加1
    22 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_DOWN);    //保留三位小数,直接舍去
    23 //        BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_UP);    //保留三位小数,当ROUND_HALF_UP>=0.5时,和ROUND_UP功能相同(即向上加1)。
    24         BigDecimal div = a.divide(b,3,BigDecimal.ROUND_HALF_DOWN);    //保留三位小数,如果舍弃部分>0.5时,则舍入行为与ROUN_UP相同(向上加1),否则舍入行为与ROUND_DOWN相同。
    25         System.out.println(div);
    26     }
    27 }
    28 
    29 
    30 
    31 /*
    32 以上代码执行结果如下:
    33 3.267
    34 */
  • 相关阅读:
    C#成员设计建议
    基于任务的异步编程模式(TAP)的错误处理
    基于任务的异步编程模式(TAP)
    C#克隆
    C#操作excel打印
    父元素如何围住浮动子元素
    intellij idea创建第一个动态web项目
    Idea快捷键
    Python中列表的copy方法
    C++读取数量不定的数据
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8911675.html
Copyright © 2011-2022 走看看