java 金额转中文

java  金额转中文

package utils;
/**
 * @Author: flysky
 * @Date: 2020/5/21 20:21
 */
public class NumberUtils {


    public static String numberToChinese(String input,boolean isMoney) {
        String s1 = "零壹贰叁肆伍陆柒捌玖";
        String s4 = "分角整元拾佰仟万拾佰仟亿拾佰仟";
        String temp = "";
        String result = "";
        if (input == null)
            return "输入的字符串只能包括以下字符(0~9,.),且最大只能精确到仟亿,小数点只能两位!";
        temp = input.trim();
        float f;
        try {
            //System.out.println(Float.parseFloat(temp));
            f = Float.parseFloat(temp);
        } catch (Exception e) {
            return "输入的字符串只能包括以下字符(0~9,.),且最大只能精确到仟亿,小数点只能两位!";
        }
        if(f==0F)temp="0";
        int len = 0;
        if (temp.indexOf(".") == -1)
            len = temp.length();
        else
            len = temp.indexOf(".");
        if (len > s4.length() - 3)
            return ("输入字符串最大只能精确到仟亿,小数点只能两位!");
        int n1 = 0;
        String num = "";
        String unit = "";
        for (int i = 0; i < temp.length(); i++) {
            if (i > len + 2) {
                break;
            }
            if (i == len) {
                continue;
            }

            //判断是否是负数
            if((String.valueOf(temp.charAt(i)).equals("-"))) {
                num = "负";
                result = result.concat(num);
            }else {
                n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));
                num = s1.substring(n1, n1 + 1);
                n1 = len - i + 2;
                if(isMoney){
                    unit = s4.substring(n1, n1 + 1);
                    result = result.concat(num).concat(unit);
                }
                else{
                    result = result.concat(num);
                }
            }
            //n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));

        }
        if(isMoney){
            if ((len == temp.length()) || (len == temp.length() - 1))
                result = result.concat("整");
            if (len == temp.length() - 2)
                result = result.concat("零分");
        }
        else{

        }
        result = result.replace("零拾", "零");
        result = result.replace("零佰", "零");
        result = result.replace("零仟", "零");
        result = result.replace("零零零", "零");
        result = result.replace("零零", "零");
        result = result.replace("零亿", "亿");
        result = result.replace("零万", "万");
        if(result.indexOf("零元")>0){
            result = result.replace("零元", "元");
        }
        /** 这两句不能颠倒顺序 */
        result = result.replace("零零零零万", "");
        result = result.replace("零零零零", "");
        result = result.replace("亿万", "亿");
        /** 这样读起来更习惯. */
        //result = result.replace("壹拾亿", "拾亿");
        //result = result.replace("壹拾万", "拾万");
        //如果以金额大写是以壹拾开头的,则替换成拾,否则不用替换
        if(result.startsWith("壹拾")){
            result = result.replace("壹拾亿", "拾亿");
            result = result.replace("壹拾万", "拾万");
        }


        if(result.contains("零角零分")) {
            result=result.replace("零角零分", "整");
        }
        return result;
    }


    public static String convertToBigNumber(int s) {
        String[] c = { "","一", "二", "三", "四", "五", "六", "七", "八", "九" };
        String[] d = { "", "十", "百", "仟", "万", "拾万", "百万", "千万", "亿" };
        String ss = s + "";// 数字强行转换成字符串
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < ss.length(); i++) {
            String k = ss.substring(i, i + 1);
            int f = Integer.parseInt(k);
            if (f == 0) {
                int u = Integer.parseInt(ss.substring(i - 1, i));
                if (u != 0) {
                    buffer.append(c[0]);
                }
            } else {
                buffer.append(c[f]);
                buffer.append(d[ss.length() - i - 1]);
            }
        }
        //如果是10 或者十几,我们前面是没有1的
        String numStr = buffer.toString();
        if(numStr.length()==3){
            if(numStr.charAt(1)=='十'&&numStr.charAt(0)=='一')
                return numStr.substring(1, 3);
        }
        if(numStr.equals("一十")){
            return "十";
        }
        return numStr;
    }

    public static void main(String args[]) {
        //贰仟叁佰贰拾贰万贰仟贰佰贰拾叁元整
        System.out.println(numberToChinese("23222223.00", true));
        //一百二十三
        System.out.println(convertToBigNumber(123 ));

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值