如何让10/100=0.1

1. 概述

在开发过程中,尤其在电商项目中比较常见,需要显示 商品的金额;

在自己项目中,服务器给返回的金额是分,但是需要在列表中显示金额单位是元,这里就涉及到 让 10/100 = 0.01,如果直接用 两个int类型的值相除是不可以的,因为两个值相除结果为0,可以直接使用下边工具类即可:

/**
 * Email: [email protected]
 * Created by Novate 2018/6/25 10:54
 * Version 1.0
 * Params:
 * Description:    金额 1/100 = 0.01
*/

public class AmountUtils {

    /**金额为分的格式 */
    public static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+";

    public static String changeF2YI(int amount) {
        try {
            if(!String.valueOf(amount).matches(CURRENCY_FEN_REGEX)) {
                throw new Exception("金额格式有误");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        int flag = 0;
        String amString = String.valueOf(amount);
        if(amString.charAt(0)=='-'){
            flag = 1;
            amString = amString.substring(1);
        }
        StringBuffer result = new StringBuffer();
        if(amString.length()==1){
            result.append("0.0").append(amString);
        }else if(amString.length() == 2){
            result.append("0.").append(amString);
        }else{
            String intString = amString.substring(0,amString.length()-2);
            for(int i=1; i<=intString.length();i++){
                if( (i-1)%3 == 0 && i !=1){
                    result.append(",");
                }
                result.append(intString.substring(intString.length()-i,intString.length()-i+1));
            }
            result.reverse().append(".").append(amString.substring(amString.length()-2));
        }
        if(flag == 1){
            return "-"+result.toString();
        }else{
            return result.toString();
        }
    }
}

你可能感兴趣的:(如何让10/100=0.1)