• java.math.BigDecimal类


    BigDecimal类用于高精度计算。一般的float型和Double型数据只可以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高,所以要用到java.math.BigDecimal类,它支持任何精度的定点数,可以用它来精确计算货币值。

    有几点值得注意一下,

    1、BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。

    2、方法中的参数也必须是BigDecimal的对象。
         如:two.add(2)就是一种错误的操作,因为2没有变为BigInteger型。要写为BigInteger two=new BigInteger("2");

    3、 BigDecimal一共有4个构造方法:
          BigDecimal(int)
          BigDecimal(double)
          BigDecimal(long)
          BigDecimal(String)
     
    介绍一下BigDecimal的几个常用方法:

    1、BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode);

         /**

          *   两个BigDecimal相除

          *   返回一个BigDecimal,精确位数为scale指定值,舍入方式为roundingMode

          *   ROUND_HALF_UP:向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6(四舍五入)

          */

        eg:

            BigDecimal bd1 = new BigDecimal(Double.toString(v1));

              BigDecimal bd2 = new BigDecimal(Double.toString(v2)); 

              double pricediscount=bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP).doubleValue();

    2、BigDecimal.add(BigDecimal augend, MathContext mc)
         /**

          *   两个BigDecimal相加

          *   返回一个BigDecimal,舍入方式为mc

          */

        eg:

            BigDecimal bd1 = new BigDecimal(Double.toString(v1));

              BigDecimal bd2 = new BigDecimal(Double.toString(v2)); 

              double pricediscount=bd1.add(bd2).doubleValue().doubleValue();

    其他方法参照
    参数类型为 MathContextjava.math 中的方法
     BigDecimal BigDecimal.abs(MathContext mc)
              返回其值为此 BigDecimal 绝对值的 BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.add(BigDecimal augend, MathContext mc)
              返回其值为 (this + augend)BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.divide(BigDecimal divisor, MathContext mc)
              返回其值为 (this / divisor)BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.divideAndRemainder(BigDecimal divisor, MathContext mc)
              返回由两个元素组成的 BigDecimal 数组,该数组包含 divideToIntegralValue 的结果,后跟根据上下文设置对两个操作数进行舍入计算所得到的 remainder 的结果。
     BigDecimal BigDecimal.divideToIntegralValue(BigDecimal divisor, MathContext mc)
              返回 BigDecimal,其值为 (this / divisor) 的整数部分。
     BigDecimal BigDecimal.multiply(BigDecimal multiplicand, MathContext mc)
              返回其值为 (this × multiplicand)BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.negate(MathContext mc)
              返回其值为 (-this)BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.plus(MathContext mc)
              返回其值为 (+this)BigDecimal(根据上下文设置进行舍入)。
     BigDecimal BigDecimal.pow(int n, MathContext mc)
              返回其值为 (thisn)BigDecimal
     BigDecimal

    BigDecimal.remainder(BigDecimal divisor, MathContext mc)
              返回其值为 (this % divisor)BigDecimal(根据上下文设置进行舍入)。

     BigDecimal

    BigDecimal.round(MathContext mc)

             返回根据 MathContext 设置进行舍入后的 BigDecimal

     BigDecimal

    BigDecimal.subtract(BigDecimal subtrahend, MathContext mc) 

            返回其值为 (this - subtrahend)BigDecimal(根据上下文设置进行舍入)。

     
     
  • 相关阅读:
    Linux密码文件介绍
    MongoDB与微服务
    MongoDB应用场景及选型
    MongoDB性能诊断工具
    1.7每日进度
    《架构即未来》(3)
    《架构即未来》(2)
    论面向服务架构设计
    浅谈MVC设计模式
    《架构即未来》(1)
  • 原文地址:https://www.cnblogs.com/selinamee/p/3511943.html
Copyright © 2020-2023  润新知