package com.zy.crm.manager.utils; 
 | 
  
 | 
//数字中文大写工具类 
 | 
public class ChineseNumberUtils { 
 | 
  
 | 
    private static final String[] CN_NUMERIC = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; 
 | 
  
 | 
    private static final String[] CN_CARRY = {"", "拾", "佰", "仟"}; 
 | 
  
 | 
    private static final String[] CN_UNITS = {"", "万", "亿", "兆"}; 
 | 
  
 | 
    private static final String CN_FULL = "整"; 
 | 
  
 | 
    private static final String CN_NEGATIVE = "负"; 
 | 
  
 | 
    public static String numberToChinese(double number) { 
 | 
        if (number == 0) { 
 | 
            return CN_NUMERIC[0]; 
 | 
        } 
 | 
  
 | 
        long temp = (long) (number * 100); 
 | 
        int numFen = (int) (temp % 10); 
 | 
        temp = temp / 10; 
 | 
        int numJiao = (int) (temp % 10); 
 | 
        temp = temp / 10; 
 | 
        int[] parts = new int[20]; 
 | 
        int numParts = 0; 
 | 
        for (int i = 0; temp != 0; i++) { 
 | 
            int partNum = (int) (temp % 10000); 
 | 
            parts[i] = partNum; 
 | 
            temp = temp / 10000; 
 | 
            numParts++; 
 | 
        } 
 | 
  
 | 
        boolean lastIsZero = true; 
 | 
        String chineseStr = ""; 
 | 
        for (int i = 0; i < numParts; i++) { 
 | 
            if (parts[i] == 0) { 
 | 
                lastIsZero = true; 
 | 
                if (i == numParts - 1) { 
 | 
                    chineseStr = CN_UNITS[i] + chineseStr; 
 | 
                } 
 | 
                continue; 
 | 
            } 
 | 
            if (lastIsZero) { 
 | 
                chineseStr = CN_NUMERIC[0] + chineseStr; 
 | 
            } 
 | 
            String partChinese = partTranslate(parts[i]); 
 | 
            partChinese += CN_UNITS[i]; 
 | 
            chineseStr = partChinese + chineseStr; 
 | 
            lastIsZero = false; 
 | 
        } 
 | 
  
 | 
        if (numFen == 0 && numJiao == 0) { 
 | 
            chineseStr += CN_FULL; 
 | 
        } else if (numFen == 0) { 
 | 
            chineseStr += CN_NUMERIC[numJiao] + "角" + CN_FULL; 
 | 
        } else { 
 | 
            if (lastIsZero) { 
 | 
                chineseStr += CN_NUMERIC[0]; 
 | 
            } 
 | 
            chineseStr += CN_NUMERIC[numJiao] + "角" + CN_NUMERIC[numFen] + "分"; 
 | 
        } 
 | 
  
 | 
        return chineseStr; 
 | 
    } 
 | 
  
 | 
    private static String partTranslate(int partNum) { 
 | 
        if (partNum < 0 || partNum > 10000) { 
 | 
            return ""; 
 | 
        } 
 | 
  
 | 
        String[] chNum = new String[4]; 
 | 
        int unitPos = 0; 
 | 
        boolean zero = true; 
 | 
        while (partNum > 0) { 
 | 
            int num = partNum % 10; 
 | 
            if (num == 0) { 
 | 
                if (!zero) { 
 | 
                    zero = true; 
 | 
                    chNum[unitPos++] = CN_NUMERIC[num]; 
 | 
                } 
 | 
            } else { 
 | 
                zero = false; 
 | 
                chNum[unitPos++] = CN_NUMERIC[num] + CN_CARRY[unitPos - 1]; 
 | 
            } 
 | 
            partNum = partNum / 10; 
 | 
        } 
 | 
  
 | 
        StringBuilder strBuf = new StringBuilder(); 
 | 
        boolean hasValue = false; 
 | 
        for (int i = 0; i < 4; i++) { 
 | 
            if (chNum[i] != null) { 
 | 
                if (i > 0 && !hasValue) { 
 | 
                    strBuf.insert(0, CN_NUMERIC[0]); 
 | 
                } 
 | 
                strBuf.insert(0, chNum[i]); 
 | 
                hasValue = true; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return strBuf.toString(); 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        double number = 123456789.23; 
 | 
        String chineseNumber = numberToChinese(number); 
 | 
        System.out.println(chineseNumber); 
 | 
    } 
 | 
  
 | 
} 
 |