首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

人民币(Rmb)数目字转换大写(大写)

2012-10-07 
人民币(Rmb)数字转换大写(大写)?package com.test?public class RmbConvert {public String simpleToBig(

人民币(Rmb)数字转换大写(大写)

?

package com.test;

?

public class RmbConvert {

public String simpleToBig(double money) {

if (money <= 0) {

return "不能为负数";

}

?

String result = "";

?

char[] hunit = { '拾', '佰', '仟' }; // 段内的量度

char[] vunit = { '万', '亿' }; // 段间的量度

char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 小写对应的大写

?

long longMoney = (long) (money * 100);

String strMoney = String.valueOf(longMoney); // 将小数变成整数,再放入字符串中

?

String head = strMoney.substring(0, strMoney.length() - 2); // 整数部分

String tail = strMoney.substring(strMoney.length() - 2); // 小数部分

?

String prefix = ""; // 存放转换的整数部分

String suffix = ""; // 存放转换的小数部分

?

if (tail.equals("00")) {

suffix += "整";

} else {

char tailChar[] = tail.toCharArray();

suffix += digit[tailChar[0] - '0'] + "角" // 将小数部分表示出来

+ digit[tailChar[1] - '0'] + "分"; // '0' ASCII 为 48,相减得索引号

}

?

char headChar[] = head.toCharArray();

?

/*

* 考虑零的情况,记录0的个数

*/

?

char zero = '0';

byte zeroSize = 0;

?

/*

* 先不考虑有0的情况,有点小复杂,因为有0的地方不能有单位

*?

* 等能实现大概功能时,再来考虑有0的情况

*/

for (int i = 0; i < headChar.length; i++) {

int idx = (headChar.length - i - 1) % 4; // 判断“段内”,"十,佰,千"

// idx=0,表示每4位分段了

int vidx = (headChar.length - i - 1) / 4; // 判断“段间”,“万,亿”

?

if (headChar[i] == '0') { // 考虑0的情况了

zeroSize++;

if (zero == '0') {

zero = digit[0];

} else if (idx == 0 && zeroSize < 4 && vidx > 0) {

prefix += vunit[vidx - 1]; // 当遇到1,1000,1234时, 1千万才能表示出来

zero = '0'; // 当1千万表示出来时,“零”就不需要了,在后来判断zero != 0

}

continue;

}

?

if (zero != '0') { // 没有转成千万时,就将”零“加入

prefix += zero; // 不至于出现很多个”零“

}

?

zeroSize = 0; // 还原成以前的

?

prefix += digit[headChar[i] - '0']; // ‘1’变成‘壹’

?

if (idx > 0) {

prefix += hunit[idx - 1]; // 加上 "十,佰,千"

}

if (idx == 0 && vidx > 0) {

prefix += vunit[vidx - 1]; // 加上 “万,亿”

}

}

?

if (prefix.length() > 0) {

result = prefix + "圆" + suffix;

}

?

return result;

}

?

public static void main(String[] args) {

?

RmbConvert rmb = new RmbConvert();

String cn = rmb.simpleToBig(1234567890.78);

System.out.println(cn);

}

}


热点排行