java 金额转大写
2015-08-22 11:05
459 查看
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)
{
}
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();
}
{
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)
{
}
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();
}
相关文章推荐
- Java&数字金额转大写金额
- java金额转中文大写
- java数字金额转换成汉字大写
- JAVA数字大写金额转换
- Java数字金额转换为大写金额
- Java金额数字转中文大写
- java版-金额转大写(可处理千万亿,精确到分)
- Java中实现数字金额到中文大写字符的转换!!
- Java--金额的中文大写形式
- 用java代码将阿拉伯数字金额转换成中文大写
- java实现小写金额转换大写金额
- java代码:金融系统中,将数字转换成中文金额大写形式
- 将数字货币金额转换为大写格式(java)
- java实现数字金额转换成汉字大写金额
- 金额转大写java实现
- java数字到大写金额的转换
- Java小写金额转换大写与金额比对(支持繁体大写金额)
- Java工具类——把金额转换成汉字大写金额
- 使用 JAVA 将数字金额转换成大写中文金额
- java实现数字金额转换中文大写金额