-
-Addition, subtraction, multiplication, division, and rounding operations of double type data
- Note: The current division operation is inaccurate to keep the decimal place, sorry.
You can use the split method of String to handle it yourself.
-
ArithmeticDouble.java
package com.my.test;
import java.math.BigDecimal;
/**
* Description: 四则运算(Double类型数)
* Copyright : Copyright (c) 2016
* Email : [email protected]
* Author : Jusenr
* Date : 2016/7/26 19:36
*/
public class ArithmeticDouble {
/**
* Double数四舍五入
*
* @param v double型数据
* @param scale 精确度
* @return Double
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 两个Double数相加
*
* @param v1 double型数据
* @param v2 double型数据
* @return Double
*/
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.add(b2).doubleValue();
}
/**
* 两个Double数相减
*
* @param v1 double型数据
* @param v2 double型数据
* @return Double
*/
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.subtract(b2).doubleValue();
}
/**
* 两个Double数相乘
*
* @param v1 double型数据
* @param v2 double型数据
* @return Double
*/
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.multiply(b2).doubleValue();
}
/**
* 两个Double数相除,并保留scale位小数
*
* @param v1 double型数据
* @param v2 double型数据
* @param scale 精确度
* @return Double
*/
public static Double div(Double v1, Double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}