【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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM