* 两个数相乘,结果保留n位小数
* @param num 第一个数
* @param m 第二个数
* @param n 保留的小数位
* @return
*/
public static String mul(String num,String m,String n){
if(isNullStr(num))
num="0";
if(isNullStr(m))
m="0";
if(isNullStr(n))
n="0";
BigDecimal b1 = new BigDecimal(num);
BigDecimal b2 = new BigDecimal(m);
return b1.multiply(b2).setScale(Integer.parseInt(n),BigDecimal.ROUND_HALF_UP).toString();//mul("55","22","2")="1210.00"
}
/**
* 两个数相加,结果保留n位小数
* @param num 第一个数
* @param m 第二个数
* @param n 保留的小数位
* @return
*/
public static String sum(String num,String m,String n){
BigDecimal b1 = new BigDecimal(num);
BigDecimal b2 = new BigDecimal(m);
return b1.add(b2).setScale(Integer.parseInt(n),BigDecimal.ROUND_HALF_UP).toString();//sum("55","22","2")=77.00
}
/**
* 两个数相减,结果保留n位小数
* @param num 第一个数
* @param m 第二个数
* @param n 保留的小数位
* @return
*/
public static String sub(String num,String m,String n){
if(isNullStr(num))
num="0";
if(isNullStr(m))
m="0";
if(isNullStr(n))
n="0";
BigDecimal b1 = new BigDecimal(num);
BigDecimal b2 = new BigDecimal(m);
BigDecimal res=b1.subtract(b2);
BigDecimal f= res.setScale(Integer.parseInt(n),BigDecimal.ROUND_HALF_UP);
return f.toString();//sub("55","22","2")=33.00
}
/**
* 判断是否是无效字符串
* @param str
* @return
*/
private static boolean isNullStr(String str){
if(str==null||"".endsWith(str.trim()))
return true;
return false;
}
附常用保留小数位的方法如下:
System.out.println("舍掉小数取整:Math.floor(3)=" + (int)Math.floor(3));
System.out.println("舍掉小数取整:Math.floor(3.1)=" + (int)Math.floor(3.1));
System.out.println("舍掉小数取整:Math.floor(3.5)=" + (int)Math.floor(3.5));
System.out.println("舍掉小数取整:Math.floor(3.9)=" + (int)Math.floor(3.9));
//舍掉小数取整:Math.floor(3)=3
//舍掉小数取整:Math.floor(3.1)=3
//舍掉小数取整:Math.floor(3.5)=3
//舍掉小数取整:Math.floor(3.9)=3
System.out.println("四舍五入取整:(3)=" + new BigDecimal("3").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(3.1)=" + new BigDecimal("3.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(3.5)=" + new BigDecimal("3.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(3.9)=" + new BigDecimal("3.9").setScale(0, BigDecimal.ROUND_HALF_UP));
//四舍五入取整:(3)=3
//四舍五入取整:(3.1)=3
//四舍五入取整:(3.5)=4
//四舍五入取整:(3.9)=4
System.out.println("凑整:Math.ceil(5)=" + (int)Math.ceil(5));
System.out.println("凑整:Math.ceil(5.1)=" + (int)Math.ceil(5.1));
System.out.println("凑整:Math.ceil(5.5)=" + (int)Math.ceil(5.5));
System.out.println("凑整:Math.ceil(5.9)=" + (int)Math.ceil(5.9));
//凑整:Math.ceil(5)=5
//凑整:Math.ceil(5.1)=6
//凑整:Math.ceil(5.5)=6
//凑整:Math.ceil(5.9)=6
System.out.println("舍掉小数取整:Math.floor(-5)=" + (int)Math.floor(-5));
System.out.println("舍掉小数取整:Math.floor(-5.1)=" + (int)Math.floor(-5.1));
System.out.println("舍掉小数取整:Math.floor(-5.5)=" + (int)Math.floor(-5.5));
System.out.println("舍掉小数取整:Math.floor(-5.9)=" + (int)Math.floor(-5.9));
//舍掉小数取整:Math.floor(-5)=-5
//舍掉小数取整:Math.floor(-5.1)=-6
//舍掉小数取整:Math.floor(-5.5)=-6
//舍掉小数取整:Math.floor(-5.9)=-6
System.out.println("四舍五入取整:(-3)=" + new BigDecimal("-3").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-3.1)=" + new BigDecimal("-3.1").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-3.5)=" + new BigDecimal("-3.5").setScale(0, BigDecimal.ROUND_HALF_UP));
System.out.println("四舍五入取整:(-3.9)=" + new BigDecimal("-3.9").setScale(0, BigDecimal.ROUND_HALF_UP));
//四舍五入取整:(-3)=-3
//四舍五入取整:(-3.1)=-3
//四舍五入取整:(-3.5)=-4
//四舍五入取整:(-3.9)=-4
System.out.println("凑整:Math.ceil(-4)=" + (int)Math.ceil(-4));
System.out.println("凑整:Math.ceil(-4.1)=" + (int)Math.ceil(-4.1));
System.out.println("凑整:Math.ceil(-4.5)=" + (int)Math.ceil(-4.5));
System.out.println("凑整:Math.ceil(-4.9)=" + (int)Math.ceil(-4.9));
//凑整:Math.ceil(-4)=-4
//凑整:Math.ceil(-4.1)=-4
//凑整:Math.ceil(-4.5)=-4
//凑整:Math.ceil(-4.9)=-4