【Java、Util】元和分的相互转换

import java.math.BigDecimal;
import java.text.DecimalFormat;


/**
 * @Title: ChangeMoneyUtil.java
 * @Package: 
 * @Description: TODO
 * @author: 
 * @date: 2017年5月24日 下午2:44:14
 * @version: V1.0
 */
public class ChangeMoneyUtil {

    /**
     * 分转元
     * 
     * @param fen
     * @return
     * @author 
     * @date 2017年5月24日
     */
    public static String changeFenToYuan(int fen) {
        DecimalFormat def = new DecimalFormat("0.00");// 格式化小数
        String s = def.format((float) fen / 100);
        return s;
    }

    /**
     * 分转元
     * 
     * @param fen
     * @return
     * @author 
     * @date 2017年7月3日
     */
    public static String changeFenToYuan(String fen) {
        DecimalFormat def = new DecimalFormat("0.00");// 格式化小数
        if (!StringUtil.hasText(fen)) {
            return def.format(Float.valueOf("0"));
        }
        String s = def.format(Float.valueOf(fen) / 100);
        return s;
    }

    /**
     * 元转分
     * 
     * @param fen
     * @return
     * @author 
     * @date 2017年5月24日
     */
    public static int changeYuanToFen(double yuan) {
        return Integer.valueOf((int) (yuan * 100));
    }

    /**
     * 元转分
     * 
     * @param fen
     * @return
     * @author 
     * @date 2017年7月3日
     */
    public static int changeYuanToFen(String yuan) {
        if (!StringUtil.hasText(yuan)) {
            return 0;
        }
        if (yuan.indexOf(".") != -1) {
            double num = Double.valueOf(yuan) * 100;
            // 使用round方法:解决Double精度问题
            if (round(num % 1.0,2,BigDecimal.ROUND_HALF_UP) == 0) {
                return Integer.valueOf(String.valueOf((long) num));
            }
            return Integer.valueOf(String.valueOf(num));
        }
        return Integer.valueOf(yuan) * 100;
    }

     /**   
     * 对double数据进行取精度.   
     * @param value  double数据.   
     * @param scale  精度位数(保留的小数位数).   
     * @param roundingMode  精度取值方式.   
     * @return 精度计算后的数据.   
     */ 
    public static double round(double value, int scale,  
            int roundingMode) {    
       BigDecimal bd = new BigDecimal(value);    
       bd = bd.setScale(scale, roundingMode);    
       double d = bd.doubleValue();    
       bd = null;    
       return d;    
   }
    
    /**
     * double转int
     * @param price
     * @return
     * @author 
     * @date 2017年7月12日
     */
    public static int doubleFormatToInt(Double price){
        if(null == price){
            return 0;
        }
        return Integer.valueOf(new DecimalFormat("#").format(price));
    }
    
    public static void main(String[] args) {
        /*System.out.println(changeFenToYuan(1002));
        System.out.println(changeFenToYuan(1));
        System.out.println(changeFenToYuan(0));
        System.out.println(changeFenToYuan("1002"));
        System.out.println(changeFenToYuan("1"));
        System.out.println(changeFenToYuan("0"));
        System.out.println(changeFenToYuan(null));
        System.out.println(changeYuanToFen(0));
        System.out.println(changeYuanToFen(10.02));
        System.out.println(changeYuanToFen(0.00));
        System.out.println(changeYuanToFen(null));
        System.out.println(changeYuanToFen("10.02"));
        System.out.println(changeYuanToFen("0.00"));
        //System.out.println(Integer.valueOf("1.01"));
        System.out.println(doubleFormatToInt(-100.1));*/
        System.out.println(changeYuanToFen("1.1"));
        System.out.println(110%1.0);
    }
}

 

posted @ 2017-08-29 17:05  丶会飞的羊  阅读(2307)  评论(0编辑  收藏  举报