`

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 BigDecimal操作

    这篇博文(尽管链接不可用)可能涉及了BigDecimal的基本操作和常见用法。 首先,BigDecimal的构造方式主要有两种:通过字符串或通过long/int构造。例如,`new BigDecimal("123.45")`和`new BigDecimal(12345)`。...

    高精度JSBigDecimal运算

    `BigDecimal`类在Java等其他语言中是专门用来处理高精度十进制数的,它提供了丰富的算术运算方法,确保计算结果的精确性。在JavaScript中,虽然没有内置的`BigDecimal`类,但开发者可以通过第三方库来实现类似的功能...

    计算器源码

    9. **MathContext和BigDecimal类**:`BigDecimal`和`MathContext`用于进行精确的浮点数运算,避免了浮点运算中的精度问题。在实际的计算器应用中,可能会使用这些类来进行高精度计算。 10. **LookAndFeel**:`...

    java代码-BigDecimal 四舍五入保留2位小数. 金额从单位分转成单位元

    在Java中,可以使用`divide()`方法实现除法运算,但需要注意的是,直接除可能会导致舍入误差,因此需要提供一个`MathContext`对象来控制精度。例如,保留两位小数: ```java MathContext mc = new MathContext(2); ...

    大数的 加 减 乘 除 开方运算Java版

    5. **大数开方**: `Sqrt.java` 文件中,虽然`BigInteger`类本身不提供开方功能,但可以通过其他方式实现,比如转换为`BigDecimal`后再使用`sqrt()`方法: ```java BigInteger num = new BigInteger(...

    bdparsii:超级快速,简单的Java编写的数学表达式计算器,BigDecimal版本

    bdparsii 库的BigDecimal端口。 使用它很简单: Scope scope = Scope . create(); Variable a = scope . getVariable( " a " ); Expression expr = Parser . parse( " 3 + a * 4 " , scope); a . setValue( 4 ); ...

    java编译的大整数程序可加减求绝对值开平方

    然后使用`BigDecimal`的`setScale()`方法进行四舍五入操作: ```java BigDecimal bd = new BigDecimal(num); bd = bd.setScale(2, RoundingMode.HALF_UP); // 四舍五入到小数点后两位 BigInteger roundedNum = ...

    javascript 日期数字文本格式化

    总的来说,通过JavaScript的内置方法和第三方库,我们可以灵活地处理日期和数字的文本格式化。在实际开发中,应根据项目需求选择合适的方法或库,确保在各种场景下都能得到准确且用户友好的显示结果。此外,对于跨...

    JavaDemical:Java 数字API

    否则,通过向该操作提供适当的MathContext对象,可以对已选择的精度和舍入模式执行计算。 在商业计算中要用BigDecimal。BigDecimal所创建的是对象, 我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学...

    java计算方差、标准差(均方差)实例代码

    Java 计算方差、标准差(均方差)实例代码 在统计学中,方差(Variance)和标准差(Standard Deviation)是两个重要的概念,广泛应用于数据...同时,我们也介绍了使用 BigDecimal 计算平方根的方法,以提高计算精度。

    java中每月等额与先息后本计算

    在实际应用中,我们需要确保输入的月利率是正确的小数形式,并且考虑到可能存在的精度问题,可以使用`BigDecimal`类来进行精确的浮点数运算,避免因浮点数误差导致的计算错误。`MoneyUtils.MATHCONTEXT`通常是一个...

    test-decimal:Mod的测试任务

    5. **幂运算和根运算**:使用`pow()`方法进行幂运算,注意可能产生的溢出问题;平方根等运算可以通过`MathContext`来控制精度。 在"test-decimal-master"这个项目中,测试用例应该覆盖上述所有方面,确保`...

    java API API

    `java.util.MathContext`和`java.math.BigDecimal`类增加了对高精度计算的支持,为财务和科学计算提供了更精确的数值处理。 这些是JDK7中Java API的一些重要更新和改进。通过使用这些新特性,开发者可以编写更高效...

    使用java处理字符串公式运算的方法

    `parse` 方法接收公式字符串、中间公式映射(`formulas`)和基础数据映射(`values`),首先递归地替换所有中间变量,然后进行后缀表达式的转换和计算。 以下是一个简化版的 `FormulaParser` 类的实现: ```java ...

    Multiply:乘以dwo大整数

    当处理大量运算时,可以考虑使用`BigInteger`的`MathContext`来控制精度和舍入行为,以提高性能。 9. **与`BigDecimal`的区别**: 虽然`BigInteger`处理大整数,`BigDecimal`处理大浮点数,但两者都是为了处理...

Global site tag (gtag.js) - Google Analytics