MathContext和BigDecimal 的用法

一、API上说MathContext

该对象是封装上下文设置的不可变对象,它描述数字运算符的某些规则,例如由 BigDecimal 类实现的规则。

基本独立设置为:

  1. precision :某个操作使用的数字个数;结果舍入到此精度
  2. roundingMode :一个 RoundingMode 对象,该对象指定舍入使用的算法。
说明:
precision是指的是整个数字精确后的长度,而非理解的精度(scale)。
 
二、实例
 

 

public static int getLongLength(java.math.BigDecimal numericalValue) {
 
  String sNumericalValue = numericalValue.toPlainString();
  String[] arrayValues = { "", "" };
 
  if (!(sNumericalValue.indexOf(".") < 0)) {
   arrayValues = sNumericalValue.split("\\.");
  } else {
   arrayValues[0] = sNumericalValue;
  }
 
  if (arrayValues[0].contains("-")) {
   arrayValues[0] = arrayValues[0].replaceAll("-", "");
  }
 
  int intLength = arrayValues[0].length();
 
  return intLength;
 
 }
 
 public static java.math.BigDecimal muliply(java.math.BigDecimal bg1, java.math.BigDecimal bg2, int scale,
   RoundingMode roundingMode) {
 
  java.math.BigDecimal result = bg1.multiply(bg2);
  int intLength = getLongLength(result);
  MathContext context = new MathContext(intLength + scale, roundingMode);
  result = result.round(context);
 
  return result;
 
 }
 
 public static void main(String[] args) {
  System.out.print(BigDecimal.muliply(new java.math.BigDecimal(1911.11),
    new java.math.BigDecimal(10.12), 2, RoundingMode.HALF_UP));
 }
 

你可能感兴趣的:(java,算法,UP)