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工具类是用于处理数学计算的实用类,通常包含各种数学操作,如加、减、乘、除以及更复杂的数学函数。在提供的代码片段中,我们看到一个名为`XMathUtil`的自定义数学工具类,它扩展了Java的内置数学...
Mathutil 有用的数学函数的集合。 源代码中的文档。 安装 只需安装到您的项目中: sampctl package install ScavengeSurvive/mathutil 包括在您的代码中并开始使用该库: #include < mathutil> 测验 要测试,只...
`MathUtil`类可能会提供一些静态方法,如`toInt(double value)`将双精度浮点数转换为整型,或者`toDouble(int value)`将整型转换为双精度浮点数。 2. **加法运算**: `add()`方法可能用于执行两个数值的加法运算。...
Java开发中中经常使用的Java工具类分享,工作中用得上,直接拿来使用,不用重复造轮子。
MathUtil util = new MathUtil(); assertEquals(5, util.abs(-5)); assertEquals(0, util.abs(0)); assertEquals(10, util.abs(10)); } } ``` 3. **选择测试类**:在 Eclipse 中,选中刚刚创建的测试类 `...
在这个例子中,`add`方法是一个类方法,可以通过`MathUtil.add(3, 4)`来调用,无需创建`MathUtil`的实例。 类方法主要用于处理与类本身相关的任务,如数学运算、属性获取等,这些操作通常不涉及特定对象的状态。...
在上面的例子中,`MathUtil`接口定义了一个静态方法`add`,该方法可以被直接调用,如`MathUtil.add(1, 2)`。 #### 五、默认方法 默认方法是在Java 8中引入的一个重要特性,允许在接口中定义具有默认实现的方法。这...
如果你有一个名为`mathutil.lua`的模块,你可以通过`local mathutil = require("mathutil")`来导入。 在Lua中,错误处理通常通过`pcall`或`xpcall`函数进行,这两个函数可以捕获并处理运行时错误。例如,`local ...
这里,`add`方法是一个静态方法,可以直接通过`MathUtil.add(1, 2)`来调用,而无需创建`MathUtil`的实例。 #### Static代码块 静态代码块在类加载时执行,用于初始化静态变量或执行其他只需要执行一次的任务。这些...
7. **数学计算**:`MathUtil`提供了数学计算相关的函数,包括随机数生成、最大值最小值查找、四舍五入等。 8. **其他工具**:还有如`RandomUtil`用于生成随机数,`StringUtil`处理字符串,`RegexUtil`进行正则...
- 考虑以下`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; }...
**示例**:假设我们有一个名为`MathUtil`的类,它可以提供多种求和的方法,例如只接受两个整数相加的`add`方法,以及同时接受两个整数和一个浮点数相加的`add`方法。 ```java public class MathUtil { // 方法重载...
double circumference = MathUtil.calculateCircumference(5.0); System.out.println("圆的周长为: " + circumference); } } ``` ### 2. 单例设计模式 #### 定义 - **单例模式**是一种常用的软件设计模式,...
MathUtil.dll可能是一个包含数学运算和辅助函数的库,用于3D图形的坐标变换和计算。osgViewer.dll则包含了Open Scene Graph的视图和渲染相关的组件,用于展示和交互3D模型。 通过这个转换工具,用户可以将3D模型从...
13. **数学计算**:`MathUtil`可能提供了一些数学计算功能,如取最大值最小值、随机数生成、圆周率计算等。 这些工具类通常设计为静态类,可以直接在代码中调用,无需实例化对象,大大提高了开发效率。在使用时,...
同时,可以使用`MathUtil`类来生成随机的测试数据,以便进行全面的测试。 总的来说,中文数字与阿拉伯数字的转换涉及对数字结构的理解、单位的处理以及对零的特殊处理。通过明确的步骤和有效的编程实现,我们可以...