发表评论
package com.chen.test; public class TestChinese { public static void main(String[] args) { System.out.println(daxie_bf(2111112.91)); //输出结果-->贰佰壹拾壹万壹仟壹佰壹拾贰元玖角壹分 } public static String daxie_bf(double amount){ boolean negative = false; if (amount < 0.0D){ negative = true; amount *= -1D; } long temp = Math.round(amount * 100D); int numFen = (int)(temp % 10L); temp /= 10L; int numJiao = (int)(temp % 10L); temp /= 10L; int parts[] = new int[20]; int numParts = 0; for (int i = 0; temp != 0L; i++){ int part = (int)(temp % 10000L); parts[i] = part; numParts++; temp /= 10000L; } boolean beforeWanIsZero = true; String chineseStr = ""; for (int i = 0; i < numParts; i++){ String partChinese = partTranslate(parts[i]); if (i % 2 == 0) if ("".equals(partChinese)) beforeWanIsZero = true; else beforeWanIsZero = false; if (i != 0) if (i % 2 == 0) chineseStr = (new StringBuilder("亿")).append( chineseStr).toString(); else if ("".equals(partChinese) && !beforeWanIsZero){ chineseStr = (new StringBuilder("零")).append( chineseStr).toString(); } else{ if (parts[i - 1] < 1000 && parts[i - 1] > 0) chineseStr = (new StringBuilder("零")).append( chineseStr).toString(); chineseStr = (new StringBuilder("万")).append( chineseStr).toString(); } chineseStr = (new StringBuilder( String.valueOf(partChinese))).append( chineseStr).toString(); } if ("".equals(chineseStr)) chineseStr = chineseDigits[0]; else if (negative) chineseStr = (new StringBuilder("负")).append( chineseStr).toString(); chineseStr = (new StringBuilder( String.valueOf(chineseStr))).append("元").toString(); if (numFen == 0 && numJiao == 0) chineseStr = (new StringBuilder( String.valueOf(chineseStr))).append("整").toString(); else if (numFen == 0) chineseStr = (new StringBuilder( String.valueOf(chineseStr))).append( chineseDigits[numJiao]).append("角").toString(); else if (numJiao == 0) chineseStr = (new StringBuilder( String.valueOf(chineseStr))).append("零").append( chineseDigits[numFen]).append("分").toString(); else chineseStr = (new StringBuilder( String.valueOf(chineseStr))).append( chineseDigits[numJiao]).append("角").append( chineseDigits[numFen]).append("分").toString(); return chineseStr; } public static String chineseDigits[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; private static String partTranslate(int amountPart){ if (amountPart < 0 || amountPart > 0x5f5e100) throw new IllegalArgumentException( "参数必须是大于等于 0,小于 100000000 的整数!"); String units[] = { "", "拾", "佰", "仟" }; int temp = amountPart; String amountStr = (new Integer(amountPart)).toString(); int amountStrLength = amountStr.length(); boolean lastIsZero = true; String chineseStr = ""; for (int i = 0; i < amountStrLength; i++){ if (temp == 0) break; int digit = temp % 10; if (digit == 0){ if (!lastIsZero) chineseStr = (new StringBuilder("零") ).append(chineseStr).toString(); lastIsZero = true; } else{ chineseStr = (new StringBuilder( String.valueOf(chineseDigits[digit])) ).append(units[i]).append(chineseStr).toString(); lastIsZero = false; } temp /= 10; } return chineseStr; } }