人民幣金額轉化漢字的java寫法


最近看到一個把一個浮點數轉化為漢字人民幣的小題,感覺很有意思就去用java實現了一下,沒想到沒有想得那么簡單,在網上搜了一下也不近人意,經過幾次修改后,現在實現了,現在分享一下。

     一、當輸入一個浮點數后,我們要把它的整數部分和小數部分取出來。

     二、然后把相應的整數、小數部分轉化為漢字讀法。

     三、按照漢語的讀法,不能存在零仟、零佰、零拾這樣的讀法但可以存在零萬、零元等讀法,這時候我們壹仟零佰零拾零陸圓把零佰、零拾這樣的替換為零,變為壹仟零零陸圓,我們把連續為零零的替換為零就OK了。

package test;

public class NumToRmb{
    private static String[] hangArr = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖" };
    private static String[] unitArr = { "圓", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟", "萬", "拾", "佰" };
    private static String[] unitXiaoArr = { "分", "角" };


    // 把一個浮點數分為整數和小數
    public static String[] divide(double num) {
        long zheng = (long) num;
        long xiao = Math.round((num - zheng) * 100);
        String[] arr = new String[] { String.valueOf(zheng), String.valueOf(xiao) };
        return arr;
    }
    // 把一個4位數轉化為漢字
    public static String toHantr(double numStr) {
        if (numStr < 0) {
            System.out.print("請輸入一個整數");
        }
        String[] arr1 = divide(numStr);
        // 得到整數部分
        String zheng = arr1[0];
        // 得到小數部分
        String xiao = arr1[1];
        String result = "";
        // 處理整數部分
        int numLen = zheng.length();


        for (int i = 0; i < numLen; i++) {
            // 得到第i位的數值
            int num = zheng.charAt(i) - '0';
            // 數值的漢字表示
            result += hangArr[num] + unitArr[numLen - 1 - i];
        }
        // 處理小數部分
        int sumLen = xiao.length();
        for (int i = 0; i < sumLen; i++) {
            if (i > 2)
            break;// 只精確到后兩位
            // 得到第i位的數值
            int xnum = xiao.charAt(i) - '0';
            // 數值的漢字表示
            result += hangArr[xnum] + unitXiaoArr[sumLen - 1 - i];
        }
        // //替換所有零拾,零百,零仟為零
        result = result.replaceAll("零拾", "零");
        result = result.replaceAll("零佰", "零");
        result = result.replaceAll("零仟", "零");
        //把零零替換為零
        if (result.indexOf("零零") != -1) {
            result = result.replaceAll("零零", "零");
        }
        result = result.replaceAll("零億", "億");
        result = result.replaceAll("零萬", "萬");
        result = result.replaceAll("零圓", "圓");

        return result;
    }
    public static void main(String[] args) {
        System.out.print(toHantr(1213301.56));
    }
}

 


免責聲明!

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



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