简介:提供精确计算功能的Java工具类,支持加、减、乘、除四则运算,确保财务和科学计算中的数值精度不受损失。
这段文字描述了一个包含基本数学运算功能的Java工具类。该类名为`Calculation`,位于包`cn.cisdom.base.utils`下,并使用了BigDecimal进行精确计算以及DecimalFormat来格式化数值以保留两位小数。
以下是重写后的代码及说明:
```java
package cn.cisdom.base.utils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class Calculation {
public static final DecimalFormat df = new DecimalFormat(######0.00);
/**
* 该方法用于将数值保留两位小数。
*
* @param value 需要格式化的数字
* @return 格式化后的字符串形式的数字
*/
public static String format2point(Number value) {
return df.format(value);
}
/**
* 提供精确加法运算。
*
* @param value1 数值1
* @param value2 数值2
* @return 两个数值相加的结果
*/
public static Double add(Number value1, Number value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));
BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));
return b1.add(b2).doubleValue();
}
/**
* 提供精确减法运算。
*
* @param value1 被减数
* @param value2 减数
* @return 两个数值相减的结果
*/
public static Double sub(Number value1, Number value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));
BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确乘法运算。
*
* @param value1 被乘数
* @param value2 乘数
* @return 两个数值相乘的结果
*/
public static Double mul(Number value1, Number value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));
BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));
return b1.multiply(b2).doubleValue();
}
/**
* 提供精确除法运算。
*
* @param value1 被除数
* @param value2 除数
* @return 两个数值相除的结果,注意:如果被除数为0,则返回值未定义。
*/
public static Double div(Number value1, Number value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue()));
BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue()));
return b1.divide(b2).doubleValue();
}
// 主函数用于测试
public static void main(String[] args) {
Double aDouble=Calculation.add(56.9, 1.67);
System.out.println(aDouble);
Double bDouble = Calculation.sub(99.2,aDouble);
System.out.println(bDouble);
}
}
```
代码中包含了五个主要方法:`format2point()`用于格式化数值保留两位小数;`add()`, `sub()`, 和 `mul()` 分别实现了加法、减法和乘法运算,而`div()`则提供了除法功能。这些函数都使用了BigDecimal类来确保计算的准确性,并且所有返回值都被转换为double类型以方便后续操作或展示。