数量格式化

来源:互联网 发布:剑三最美成女脸型数据 编辑:程序博客网 时间:2024/04/28 21:39
public class CountUtils {    /**     * 格式化整数,以带有万/亿,K/M/B等单位.     *     * @param numStr   原整数,如果不是整数格式,会原样返回.     * @param language 中文格式传入zh_CN(包含zhcn即可),不区分大小写.     * @return 格式化的数字.     */    public static String formatNumber(String numStr, String language) {        long num;        try {            num = Long.parseLong(numStr);        } catch (NumberFormatException e) {            LogUtil.e(e);            return numStr;        }        // 确定是数字        int unitIndex; // 单位的序号.        String[] unitStrs; // 单位数组.        if (TextUtils.isEmpty(language))            language = "zh_CN";        String pattern;        language = language.toLowerCase();        if (TextUtils.indexOf(language, "zh") != -1 || TextUtils.indexOf(language, "cn") != -1) {            pattern = "#,###0";            unitStrs = new String[] {"", "亿", "9999亿+"};        } else {            pattern = "#,##0";            unitStrs = new String[] {"k", "m", "b", "999b+"};        }        DecimalFormat format = new DecimalFormat(pattern);        // 以逗号分组的数字格式.        String groupNum = format.format(num);        String[] split = groupNum.split(",");        // 仅有整数部分        if (split.length == 1)            return numStr;        // 单位        if (split.length > unitStrs.length)            return unitStrs[unitStrs.length - 1];        String unitPart = unitStrs[split.length - 2];        // 整数部分        String integerPart = split[0];        // 小数部分        String decimalPart = null;        int integerLength = integerPart.length();        if (split.length > 1 && integerLength < split[1].length()) {            decimalPart = split[1].substring(0, Math.min(2, split[1].length() - integerLength));            while (decimalPart.length() > 0 && decimalPart.lastIndexOf("0") == decimalPart.length() - 1)                decimalPart = decimalPart.substring(0, decimalPart.length() - 1);        }        StringBuilder builder = new StringBuilder();        builder.append(integerPart);        if (!TextUtils.isEmpty(decimalPart))            builder.append(".").append(decimalPart);        builder.append(unitPart);        return builder.toString();    }    /**     * 获取数量格式化字符.     *     * @param numStr     * @param context     * @return     */    public static String getCountString(String numStr, Context context) {        String language = OleConfiguration.getInstance().getLanguage(context);        return formatNumber(numStr, language);    }}
0 0
原创粉丝点击