double计算公式 double数四舍五入 保留scale位数小数

/**

* 保留小数位dbValue是需要处理的源数据 scale是为保留小数的精度 roundingMode 保留小数位的方式

* @param dbValue

* @param scale

* @param roundingMode

* @return

*/

public static Double reservedDecimalPlaces(Double dbValue, int scale, int roundingMode){

BigDecimal bgl = BigDecimal.ZERO;

if(null != dbValue){// BigDecimal.ROUND_HALF_UP

bgl = BigDecimal.valueOf(dbValue).setScale(scale, roundingMode);

}

return bgl.doubleValue();


}

/**

* double数四舍五入 ,保留scale位数小数

* @param v

* @param scale

* @return

*/

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.pide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* * 两个Double数相乘

*

* @param v1 *

* @param v2 *

* @return Double

*/

public static double mul(double v1, double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.multiply(b2).doubleValue();

}

/**

* * 两个Double数相乘 ,保留两位小数

*

* @param v1 *

* @param v2 *

* @return Double

*/

public static double mulWithDefaultScale(double v1, double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

double result = b1.multiply(b2).doubleValue();

return round(result, 2) ;

}

/**

* * 两个Double数相加

*

* @param v1 *

* @param v2 *

* @return Double

*/

public static double add(double v1, double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

/**

* * 两个Double数相减 *

*

* @param v1 *

* @param v2 *

* @return Double

*/

public static Double sub(Double v1, Double v2) {

BigDecimal b1 = new BigDecimal(v1.toString());

BigDecimal b2 = new BigDecimal(v2.toString());

return new Double(b1.subtract(b2).doubleValue());

}

/**

* * 两个Double数相除 *

*

* @param v1 *

* @param v2 *

* @return Double

*/

public static Double p(Double v1, Double v2) {

BigDecimal b1 = new BigDecimal(v1.toString());

BigDecimal b2 = new BigDecimal(v2.toString());

int DEF_DIV_SCALE = 2;

return new Double(b1.pide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)

.doubleValue());

}

/**

* * 两个Double数相除,并保留scale位小数 *

*

* @param v1 *

* @param v2 *

* @param scale *

* @return Double

*/

public static Double p(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 new Double(b1.pide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());

}

/**

* * 两个Float数相除,并保留scale位小数 *

*

* @param v1 *

* @param v2 *

* @param scale *

* @return Float

*/

public static Float p(Float v1, Float 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 new Float(b1.pide(b2, scale, BigDecimal.ROUND_HALF_UP).floatValue());

}

展开阅读全文

页面更新:2024-03-29

标签:小数   位数   小数位   精度   两个   方式   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top