`
hn_archer
  • 浏览: 132984 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

MathUtil

 
阅读更多
package org.ithink.test;

import java.math.BigDecimal;

public class MathUtil {

  /**
   * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 确的浮点数运算,包括加减乘除和四舍五入。
   */
  private static final int DEF_DIV_SCALE = 10; // 这个类不能实例化

  private MathUtil() {
  }

  /**
   * 提供精确的加法运算。
   * 
   * @param v1
   *          被加数
   * @param v2
   *          加数
   * @return 两个参数的和
   */
  public static String add(String v1, String v2) {
    BigDecimal b1 = new BigDecimal(v1);
    BigDecimal b2 = new BigDecimal(v2);
    return String.valueOf(b1.add(b2));
  }

  /**
   * 提供精确的减法运算。
   * 
   * @param v1
   *          被减数
   * @param v2
   *          减数
   * @return 两个参数的差
   */
  public static String sub(String v1, String v2) {
    BigDecimal b1 = new BigDecimal(v1);
    BigDecimal b2 = new BigDecimal(v2);
    return String.valueOf(b1.subtract(b2));
  }

  /**
   * 提供精确的乘法运算。
   * 
   * @param v1
   *          被乘数
   * @param v2
   *          乘数
   * @return 两个参数的积
   */
  public static String mul(String v1, String v2) {
    BigDecimal b1 = new BigDecimal(v1);
    BigDecimal b2 = new BigDecimal(v2);
    return String.valueOf(b1.multiply(b2));
  }

  /**
   * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
   * 
   * @param v1
   *          被除数
   * @param v2
   *          除数
   * @return 两个参数的商
   */
  public static String div(String v1, String v2) {
    return div(v1, v2, DEF_DIV_SCALE);
  }

  /**
   * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
   * 
   * @param v1
   *          被除数
   * @param v2
   *          除数
   * @param scale
   *          表示表示需要精确到小数点以后几位。
   * @return 两个参数的商
   */
  public static String div(String v1, String v2, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException(
          "The scale must be a positive integer or zero");
    }
    BigDecimal b1 = new BigDecimal(v1);
    BigDecimal b2 = new BigDecimal(v2);
    return String.valueOf(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP));
  }

  /**
   * 提供精确的小数位四舍五入处理。
   * 
   * @param v
   *          需要四舍五入的数字
   * @param scale
   *          小数点后保留几位
   * @return 四舍五入后的结果
   */
  public static String round(String v, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException(
          "The scale must be a positive integer or zero");
    }
    BigDecimal b = new BigDecimal(v);
    BigDecimal one = new BigDecimal("1");
    return String.valueOf(b.divide(one, scale, BigDecimal.ROUND_HALF_UP));
  }

}
 

 

分享到:
评论

相关推荐

    Java数学工具类MathUtil详解

    Java中的MathUtil工具类是用于处理数学计算的实用类,通常包含各种数学操作,如加、减、乘、除以及更复杂的数学函数。在提供的代码片段中,我们看到一个名为`XMathUtil`的自定义数学工具类,它扩展了Java的内置数学...

    mathutil:有用的数学函数的集合。 源代码中的文档-Source code collection

    Mathutil 有用的数学函数的集合。 源代码中的文档。 安装 只需安装到您的项目中: sampctl package install ScavengeSurvive/mathutil 包括在您的代码中并开始使用该库: #include &lt; mathutil&gt; 测验 要测试,只...

    Java计算工具类

    `MathUtil`类可能会提供一些静态方法,如`toInt(double value)`将双精度浮点数转换为整型,或者`toDouble(int value)`将整型转换为双精度浮点数。 2. **加法运算**: `add()`方法可能用于执行两个数值的加法运算。...

    MathUtil.java

    Java开发中中经常使用的Java工具类分享,工作中用得上,直接拿来使用,不用重复造轮子。

    java eclipse 单元测试

    MathUtil util = new MathUtil(); assertEquals(5, util.abs(-5)); assertEquals(0, util.abs(0)); assertEquals(10, util.abs(10)); } } ``` 3. **选择测试类**:在 Eclipse 中,选中刚刚创建的测试类 `...

    类方法与实例方法.txt

    在这个例子中,`add`方法是一个类方法,可以通过`MathUtil.add(3, 4)`来调用,无需创建`MathUtil`的实例。 类方法主要用于处理与类本身相关的任务,如数学运算、属性获取等,这些操作通常不涉及特定对象的状态。...

    Java 接口方法.pdf

    在上面的例子中,`MathUtil`接口定义了一个静态方法`add`,该方法可以被直接调用,如`MathUtil.add(1, 2)`。 #### 五、默认方法 默认方法是在Java 8中引入的一个重要特性,允许在接口中定义具有默认实现的方法。这...

    lua入门级文档十分浅显

    如果你有一个名为`mathutil.lua`的模块,你可以通过`local mathutil = require("mathutil")`来导入。 在Lua中,错误处理通常通过`pcall`或`xpcall`函数进行,这两个函数可以捕获并处理运行时错误。例如,`local ...

    java中static属性学习

    这里,`add`方法是一个静态方法,可以直接通过`MathUtil.add(1, 2)`来调用,而无需创建`MathUtil`的实例。 #### Static代码块 静态代码块在类加载时执行,用于初始化静态变量或执行其他只需要执行一次的任务。这些...

    JAVA工具类项目(用于平时的开发)

    7. **数学计算**:`MathUtil`提供了数学计算相关的函数,包括随机数生成、最大值最小值查找、四舍五入等。 8. **其他工具**:还有如`RandomUtil`用于生成随机数,`StringUtil`处理字符串,`RegexUtil`进行正则...

    9.java学习第九章——对象的创建和使用+构造方法+方法重载——作业的形式:创建对象在JVM中的存储状态(内存图).pdf

    - 考虑以下`MathUtil`类中的两个`add`方法: ```java public class MathUtil { public static int add(int a, int b) { return a + b; } public static double add(double a, double b) { return a + b; }...

    CS1807-U201814745-朱槐志java31

    **示例**:假设我们有一个名为`MathUtil`的类,它可以提供多种求和的方法,例如只接受两个整数相加的`add`方法,以及同时接受两个整数和一个浮点数相加的`add`方法。 ```java public class MathUtil { // 方法重载...

    java PPT资源

    double circumference = MathUtil.calculateCircumference(5.0); System.out.println("圆的周长为: " + circumference); } } ``` ### 2. 单例设计模式 #### 定义 - **单例模式**是一种常用的软件设计模式,...

    osgb,obj,dae格式数据相互转换工具

    MathUtil.dll可能是一个包含数学运算和辅助函数的库,用于3D图形的坐标变换和计算。osgViewer.dll则包含了Open Scene Graph的视图和渲染相关的组件,用于展示和交互3D模型。 通过这个转换工具,用户可以将3D模型从...

    Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity

    13. **数学计算**:`MathUtil`可能提供了一些数学计算功能,如取最大值最小值、随机数生成、圆周率计算等。 这些工具类通常设计为静态类,可以直接在代码中调用,无需实例化对象,大大提高了开发效率。在使用时,...

    解决开发过程中文数字阿拉伯数字相互转换的问题.docx

    同时,可以使用`MathUtil`类来生成随机的测试数据,以便进行全面的测试。 总的来说,中文数字与阿拉伯数字的转换涉及对数字结构的理解、单位的处理以及对零的特殊处理。通过明确的步骤和有效的编程实现,我们可以...

Global site tag (gtag.js) - Google Analytics