【文件属性】:
文件名称:Java 加减乘除工具类(解决精度损失问题)
文件大小:2KB
文件格式:JAVA
更新时间:2021-08-07 02:45:45
java 精度损失 加减乘除
唔,其实里面就是一个工具类,加减乘除、保留两位小数。一共5个方法。。。emmmm.....为啥分这么高呢。因为宝宝想分想疯了。
附代码,有土豪就打赏打赏,没土豪的直接拿去使吧。
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");
/**
* @methodName format2point
* @desc 保留两位小数点
* @param value
* @return java.lang.String
* @author xm
* @create 2018/6/7 12:03
**/
public static String format2point(Number value) {
return df.format(value);
}
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 除数/被除数
*/
public static Double div(Number value1, Number value2) {
//MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//精度为2,舍入模式为大于0.5进1,否则舍弃
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);
}
}