package com.dy.pipIrrGlobal.util; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2024-02-01 9:58 
 | 
 * @LastEditTime 2024-02-01 9:58 
 | 
 * @Description 金额数字转中文大写 
 | 
 */ 
 | 
public class AmountToChinese { 
 | 
    private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; 
 | 
    private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" }; 
 | 
    private static final String CN_FULL = "整"; 
 | 
    private static final String CN_NEGATIVE = "负"; 
 | 
    private static final int MONEY_PRECISION = 2; 
 | 
    private static final String CN_ZEOR_FULL = "零元" + CN_FULL; 
 | 
  
 | 
    public static String toChinese(BigDecimal amount) { 
 | 
        StringBuilder result = new StringBuilder(); 
 | 
        amount = amount.setScale(MONEY_PRECISION, BigDecimal.ROUND_HALF_UP); 
 | 
        long number = amount.movePointRight(MONEY_PRECISION).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); 
 | 
        boolean zero = true; 
 | 
        int unitIndex = 0; 
 | 
        if (number == 0) { 
 | 
            return CN_ZEOR_FULL; 
 | 
        } 
 | 
        if (number < 0) { 
 | 
            number = -number; 
 | 
            result.append(CN_NEGATIVE); 
 | 
        } 
 | 
        long scale = 10; 
 | 
        while (true) { 
 | 
            if (number == 0) { 
 | 
                break; 
 | 
            } 
 | 
            long numIndex = number % scale; 
 | 
            if (zero && numIndex == 0) { 
 | 
                zero = false; 
 | 
            } 
 | 
            if (numIndex != 0) { 
 | 
                result.insert(0, CN_UPPER_MONETRAY_UNIT[unitIndex]) 
 | 
                        .insert(0, CN_UPPER_NUMBER[(int) numIndex]); 
 | 
                zero = false; 
 | 
            } 
 | 
            else if (!zero) { 
 | 
                result.insert(0, CN_UPPER_NUMBER[(int) numIndex]); 
 | 
            } 
 | 
            number = number / scale; 
 | 
            unitIndex++; 
 | 
        } 
 | 
        if (zero) { 
 | 
            result.append(CN_FULL); 
 | 
        } 
 | 
        return result.toString(); 
 | 
    } 
 | 
} 
 |