java 数字转换开发票大写格式_Java转化数字为大写人民币

/*

* 将小写的人民币转化成大写

*/

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)

{

throw new InputException("超出转化范围.");

}

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();

}

posted on

2007-09-18 12:11

Regal

阅读(152)

评论(0)

编辑

收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值