package com.jinqiao.util;
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的内置数学...
此外,还有其他的工具类,如DateUtil处理日期时间,RegexUtil用于正则表达式操作,MathUtil提供数学计算辅助,ArrayListUtil和HashMapUtil则针对集合操作提供便利的方法。这些工具类的使用,能够使开发者更加专注于...
在进行数学计算时,不同数据类型的数值混合运算可能导致精度丢失或错误。例如,整型(int)与浮点型(float/double)之间的转换。`MathUtil`类可能会提供一些静态方法,如`toInt(double value)`将双精度浮点数转换为...
5. **MathUtil**:数学运算工具类,可能提供了一些高级的数学计算,比如最大值、最小值、平均值、幂运算、三角函数等,或者是一些统计相关的计算。 6. **ReflectUtil**:反射工具类,用于动态地获取类的信息,创建...
7. **数学计算工具类**:如MathUtil,可能包含各种数学运算,如取模、平方根、随机数生成等,简化了复杂的数学操作。 8. **网络工具类**:如NetUtil,可能包含IP地址处理、端口检查、URL解析等功能,对于处理网络...
7. **数学计算**:`MathUtil`提供了数学计算相关的函数,包括随机数生成、最大值最小值查找、四舍五入等。 8. **其他工具**:还有如`RandomUtil`用于生成随机数,`StringUtil`处理字符串,`RegexUtil`进行正则...
这个类可能包含了一些关于Java Bean的操作方法,比如属性的设置与获取、Bean对象的复制(deep copy或shallow copy)、Bean信息的获取等。这些方法通常用于对象之间的数据转换,或者在处理业务逻辑时对Bean对象的...
在Java中,工具类通常是一些静态方法集合,它们提供单一功能,如字符串操作、日期时间处理、数学计算等。这些类不包含实例变量,因为它们的设计目的是为其他类提供服务,而不是作为独立的对象存在。 在"java-utils...
在Java开发中,工具类通常是一些静态方法集合,提供了各种通用功能,如字符串处理、日期时间操作、数学计算、网络通信等。这些工具类可以被其他类方便地调用,避免重复编写相同或相似的代码,提升代码的可读性和复用...
"JAVA开发中重用到的Utils,通用工具类 utils.rar"这个压缩包很可能包含了一些常用的Utils类集合,这些工具类覆盖了字符串处理、日期时间、IO操作、数学计算、集合操作等多个方面。下面,我们将详细探讨Java开发中...
例如,一个计算圆周率的数学函数,它并不依赖于任何特定的对象状态。 - **示例**: ```java public class MathUtil { public static double PI = 3.1415926; // 静态方法 public static double ...
`”展示了这种特性,尽管例子中的语法略有偏差,但意图是明确的——调用静态方法进行数学计算或系统属性的获取。 ### 实例方法 实例方法是在对象实例上定义的方法,需要通过特定的对象实例来调用。实例方法可以...
MathUtil 是一个数学工具类,提供了多种数学操作方法,包括计算最大值、最小值和求和。该类中的方法都是静态方法,可以直接调用。 min() 方法 min() 方法用于计算集合中的最小值。该方法有两个重载版本,一个接受...
6. **数学运算**:MathUtil提供了数学计算相关的函数,如随机数生成、最大最小值查找、四舍五入等。 7. **线程控制**:ThreadUtil则包含了一系列线程操作的辅助方法,如线程的启动、暂停、恢复、中断和销毁。 8. *...
9. **数学计算工具类**:如`MathUtil`,提供一些数学运算,如最大值、最小值、随机数生成等。 10. **线程和并发工具类**:如`ThreadUtil`,包含线程的创建、控制、同步、睡眠等功能。 11. **日志工具类**:如`...
* 这是一个用于计算数学运算的工具类 * @author 张三 * @version 1.0 */ public class MathUtil { // 类成员 } ``` #### 2. 多次使用的相同变量最好归纳成常量 为了提高代码的可维护性和可读性,建议将多次...
- **数学计算**:`MathUtil`,提供一些数学上的便捷方法。 - **日志记录**:`LogUtil`,简化日志输出,方便调试和问题排查。 - **异常处理**:`ExceptionUtil`,处理和封装异常,提供统一的错误信息。 3. **...
在Java编程语言中,工具类(Utility Class)是一种专门设计用来提供各种静态方法的类,这些方法通常执行特定的功能,如字符串操作、日期处理、数学计算等。它们不包含实例变量,也不需要被实例化,因为它们是为其他...
- 标准库:Java标准库(JDK)提供了丰富的数学函数,如`java.lang.Math`类,可以用于基础的数学计算。 2. **数学运算**: - 常规运算:项目可能包括加减乘除、指数、对数等基本运算。 - 复数运算:对于复杂的...
- 随机数生成、数学运算优化,比如MathUtil。 - 统计计算,如平均值、中位数、标准差等,可能在StatisticalUtil类里。 6. **反射和注解处理**: - 类型检查、实例化、获取字段和方法,可能有ReflectUtil。 - ...