数字转换工具类

import java.math.BigDecimal;
import java.math.RoundingMode;

public class ArithUtils {
   
   /**
    * double类型数据乘法
    * */
   public static Double multiDouble(Double d1, Double d2){
      BigDecimal b1 = new BigDecimal(Double.toString(d1));  
        BigDecimal b2 = new BigDecimal(Double.toString(d2));  
        //return b1.multiply(b2).doubleValue();    
        return b1.multiply(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位。舍弃小数点后两位的小数
   }
   
   /**
    * double类型数据除法
    * */
    public static double div(double d1,double d2,int len) {// 进行除法运算,int len 表示精确到小数点后几位数
         BigDecimal b1 = new BigDecimal(d1);
         BigDecimal b2 = new BigDecimal(d2);
         return b1.divide(b2,len,BigDecimal.ROUND_DOWN).doubleValue();
     }
   
   /**
    * double类型数据减法
    * */
   public static Double subDouble(Double d1, Double d2){
        BigDecimal b1 = new BigDecimal(Double.toString(d1));  
         BigDecimal b2 = new BigDecimal(Double.toString(d2));  
         //return b1.subtract(b2).doubleValue(); 
         return b1.subtract(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位
      
   }
   
   /**
    * double类型数据加法
    * */
    public static double add(Double d1, Double d2){   
        BigDecimal b1 = new BigDecimal(Double.toString(d1));  
         BigDecimal b2 = new BigDecimal(Double.toString(d2));   
         //return b1.add(b2).doubleValue();
         return b1.add(b2).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();//精确到小数点两位
    } 
   
   /**
    * 整数类型转化为百分数
    * */
   public static Double divDouble(String data){
      Double d2 = Double.valueOf(data);
      return d2/100.00;      
      
   }
   
   /**
    * double类型比大小 d1大于d2都为true
    * */
   public static int compareDouble(Double d1, Double d2){
      
       BigDecimal b1 = new BigDecimal(Double.toString(d1));  
        BigDecimal b2 = new BigDecimal(Double.toString(d2)); 
        return b1.compareTo(b2);
      
   }
   
   /**
    * 积分转化为人民币
    * */
   public static Double transformPoint(Double point, Double count){
             
      Double unit = 1.00;
      Double ruls =  unit/count;
      Double money = multiDouble(point,ruls);
      
      return money;
   }
   
   /**
    * 四舍五入
    * */
   public static double formatDoubleRound(double d) {
        return (double)Math.round((d*100)/100);
    }
   
   /**
    * 精确到保留到小数点后几位数
    */
    public static double formatDoubleRoundDigt(double d,int len){
       BigDecimal b = new BigDecimal(d); 
       return b.setScale(len, BigDecimal.ROUND_DOWN).doubleValue();  
    }
     
   /**
    * 向下取整
    * */
   public static double ceilPoint(double d) {
        return (double)Math.floor(((d*100)/100));
    }
    
   public static void main(String[] args){
      
      System.out.println(ArithUtils.compareDouble(11.0, 1.0));
      
   }
   /**  
    * Title: getPointScale 
    * Description: 将小数 分数转化为比例形式  
    * @param rate
    * @return  
    */  
   public static String getPointScale(BigDecimal rate){
      double parseExcelNumericalValue = BigDecimalUtil.parseExcelNumericalValue(rate, 3, RoundingMode.HALF_UP);
      String plainString = String.valueOf(parseExcelNumericalValue);
      String[] split = plainString.split("\\.");
      int a = Integer.parseInt(split[0]);//获取整数部分  
      int b = Integer.parseInt(split[1]);//获取小数部分  
      int length = split[1].length();
       int FenZi =(int)(a*Math.pow(10, length)+b);
       int FenMu = (int) Math.pow(10, length); 
       int MaxYueShu = getGongYueShu(FenZi,FenMu);
      return FenZi/MaxYueShu+":"+FenMu/MaxYueShu;
   }
   /**  
    * Title: getGongYueShu 
    * Description: 求两个数的最大公约数  
    * @param a
    * @param b
    * @return  
    */  
   public static int getGongYueShu(int a, int b) {
        int t = 0;  
        if(a < b){  
        t = a;  
        a = b;  
        b = t;  
        }  
        int c = a % b;  
        if(c == 0){  
            return b;  
        }else{  
            return getGongYueShu(b, c);  
        }  
    } 

}

猜你喜欢

转载自blog.csdn.net/heihei_100/article/details/80688419