当前位置 博文首页 > wwwwwwweq的博客:java 字符串 数字加法,减法,乘法,除法
?roundingMode? ? BigDecimal类中的常量? ?小数点省略规则? 具体看源码注释
列如:
1、ROUND_UP:进位制:不管保留数字后面是大是小(0除外)都会进1
2、ROUND_DOWN:保留设置数字,后面所有直接去除
3、ROUND_HALF_UP:根据保留数字后一位?保留小数位的后一位?大于等于?5四舍五入
4、ROUND_HALF_DOWN:根据保留数字后一位保留小数位的后一位?大于5四舍五入
/** * 提供精确乘法运算的multiply方法 * * @param value1 被乘数 * @param value2 乘数 * @param scale 精确范围(小数点后几位) * @param roundingMode BigDecimal.ROUND_UP */ public static String multiply(String value1, String value2, int scale, int roundingMode) { BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); BigDecimal result = b1.multiply(b2); // mode为0,则不需要精确 result = result.setScale(scale, roundingMode); return result.toPlainString(); } /** * 提供精确加法计算的add方法 * * @param value1 被加数 * @param value2 加数 * @param scale 精确范围(小数点后几位) * @param roundingMode BigDecimal.ROUND_UP */ public static String add(String value1, String value2, int scale, int roundingMode) { BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); BigDecimal result = b1.add(b2); // mode为0,则不需要精确 result = result.setScale(scale, roundingMode); return result.toPlainString(); } /** * 提供精确减法运算的subtract方法 * * @param value1 被减数 * @param value2 减数 * @param scale 精确范围(小数点后几位) */ public static String subtract(String value1, String value2, int scale, int roundingMode) { BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); BigDecimal result = b1.subtract(b2); result = result.setScale(scale, roundingMode); return result.toString(); } /** * 比较大小 :返回较大的那个 */ public static String getMax(String value1, String value2) { BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); if (b1.compareTo(b2) > 0) { return b1.toString(); } else { return b2.toString(); } } /** * 比较大小 :返回较小的那个 */ public static String getMin(String value1, String value2) { BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); return new Double(b1.min(b2).doubleValue()).toString(); } /** * 字符串除法运算 * @param value1 被除数 * @param value2 除数 * @param scale 小数位 * @param roundingMode BigDecimal.ROUND_UP * @return */ public static String divide(String value1, String value2, int scale, int roundingMode){ BigDecimal b1 = new BigDecimal(value1); BigDecimal b2 = new BigDecimal(value2); BigDecimal divide = b1.divide(b2); BigDecimal bigDecimal = divide.setScale(scale, roundingMode); return bigDecimal.toString(); }cs下一篇:没有了