两个数的运算,结果保留n位有效数字,不足补0。

来源:互联网 发布:德文布克体测数据 编辑:程序博客网 时间:2024/05/01 18:21
/**
* 两个数相乘,结果保留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



阅读全文
0 0
原创粉丝点击