java 转换数字为人民币大写
2012-03-31 14:26
507 查看
java 转换数字为人民币大写
import java.text.DecimalFormat; public class MoneyUtil { /* * 将小写的人民币转化成大写 */ public static String convertToChineseNumber(double number) { StringBuffer chineseNumber = new StringBuffer(); String [] num={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; String [] unit = {"分","角","圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万"}; String tempNumber = String.valueOf(Math.round((number * 100))); int tempNumberLength = tempNumber.length(); if ("0".equals(tempNumber)) { return "零圆整"; } if (tempNumberLength > 15) { try { throw new Exception("超出转化范围."); } catch (Exception e) { e.printStackTrace(); } } boolean preReadZero = true; //前面的字符是否读零 for (int i=tempNumberLength; i>0; i--) { if ((tempNumberLength - i + 2) % 4 == 0) { //如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位 if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) { if (!preReadZero) { chineseNumber.insert(0, "零"); preReadZero = true; } i -= 3; //下面还有一个i-- continue; } //如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志) preReadZero = true; } Integer digit = Integer.parseInt(tempNumber.substring(i - 1, i)); if (digit == 0) { //如果当前位是零并且标志为未读零,则读零,并设置标志为已读零 if (!preReadZero) { chineseNumber.insert(0, "零"); preReadZero = true; } //如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万) if ((tempNumberLength - i + 2) % 4 == 0) { chineseNumber.insert(0, unit[tempNumberLength - i]); } } //如果当前位不为零,则读出此位,并且设置标志为未读零 else { chineseNumber.insert(0, num[digit] + unit[tempNumberLength - i]); preReadZero = false; } } //如果分角两位上的值都为零,则添加一个“整”字 if (tempNumberLength - 2 >= 0 && "00".equals(tempNumber.substring(tempNumberLength - 2, tempNumberLength))) { chineseNumber.append("整"); } return chineseNumber.toString(); } public static String number2BigRMB(double sum) { String[] numeral ={"十", "百", "千"}; String[] bigNumeral = {"亿", "万"}; String[] measure = {"元", "角", "分"}; String[] numbers ={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; StringBuffer result = new StringBuffer(); int digit = 0; for (double temp = sum; temp >= 1; temp /= 10) { digit++; } int loop = 0; for (int temp = digit - 4; temp > 0; temp -= 4) { loop++; } int srcLoop = loop; boolean acrossLoopZeroFlag = true; while (loop >= 0) { int doubleBigNumber1 = (int) (sum / Math.pow(10000, loop)); sum %= Math.pow(10000, loop); int bigDigit = 0; for (double temp = doubleBigNumber1; temp >= 1; temp /= 10) { bigDigit++; } if (bigDigit < 4 && srcLoop != loop && acrossLoopZeroFlag) { result.append(numbers[0]); acrossLoopZeroFlag = false; } else { acrossLoopZeroFlag = true; } boolean flag = true; if (loop > 0) { flag = false; } boolean innerFlag = true; if (doubleBigNumber1 == 0) { innerFlag = false; } boolean addZeroFlag = false; int i = (int) Math.pow(10, bigDigit - 1); for (; i >= 1; i = i / 10, bigDigit--) { int doubleNumber = doubleBigNumber1 / i; if (doubleNumber > 0) { if (addZeroFlag) { result.append(numbers[0]); addZeroFlag = false; } result.append(numbers[doubleNumber]); if (bigDigit == 1) { if (flag) { result.append(measure[0]); } else { result.append(bigNumeral[loop % 2]); } } else { result.append(numeral[bigDigit - 2]); } } else if (bigDigit == 1) { if (flag) { result.append(measure[0]); } else { if (innerFlag) { result.append(bigNumeral[loop % 2]); } } } else { addZeroFlag = true; } doubleBigNumber1 %= i; } loop--; } DecimalFormat df = new DecimalFormat("#.##"); String floatStr = df.format(sum); floatStr = floatStr.substring(floatStr.indexOf(".") + 1); int floatPart = Integer.parseInt(floatStr); int jiao = floatPart / 10; int fen = floatPart % 10; if (jiao > 0) { result.append(numbers[jiao]); result.append(measure[1]); } if (fen > 0) { result.append(numbers[fen]); result.append(measure[2]); } return result.toString(); } } |
相关文章推荐
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
- java实现将数字转换成人民币大写
- Java学习小试牛刀之数字金额转换为人民币大写
- 数字转换为汉语中人民币的大写
- -------------------------SQL SERVER函数将人民币数字转换成大写形式---------------------
- 将天文数字转换成中文大写(.Net/C#/VB/T-SQL/Java 实现)
- 转换金额为大写人民币-Java
- 刚开始学Java,写了一个金额大写转换和中文大写数字转换的类
- 数字转换成人民币大写格式(带界面)
- 将数字金额转换成大写人民币形式
- 人民币数字转换成大写形式
- java实现阿拉伯数字转人民币大写(精确到分)
- 数字金额转换中文大写Java实现
- java 数字 转换 大写
- irport报表,把数字金额转换成大写人民币金额
- java实现数字金额转换成汉字大写金额
- JS实现将数字金额转换为大写人民币汉字的方法
- Java实现阿拉伯数字转换成中文大写数字,以及中文大写数字到阿拉伯数字的转换。
- java数字货币转换成人民币大写
- 疯狂JAVA习题 数字转换成人民币