Java 金额转换
[java]
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class MoneyToChinese {
private static String[] digit = { "", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万",
"亿", "拾亿", "佰亿", "仟亿", "万亿" };
private static final String FEN ="分";
private static final String JIAO ="角";
private static final String YUAN ="圆";
private static final String ZHENG ="整";
public static void main(String[] args) {
System.out.println(getMoneyString(1269854896));
}
/**www.zzzyk.com
* 取得数字对应的中文
*
* @param money
* @return
*/
public static String getMoneyString(double money) {
// 将字符串转为为BigDecimal格式
BigDecimal b = new BigDecimal(String.valueOf(money));
// 设置精度为2,小数点后2位
String strMoney = "" + b.setScale(2, BigDecimal.ROUND_UNNECESSARY);
// 按小数点分为 整数 和 小数 两部分
String[] amt = strMoney.split("\\.");
// 调用函数获取 元 和 小数 部分的字符串
strMoney = getYuan(amt[0]) + YUAN + getJIAOFEN(amt[1]);
// 返回最终得到的字符串
return strMoney;
}
/**
* 得到元的部分
*
* @param s
* @return
*/
public static String getYuan(String s) {
char[] c = s.toCharArray();
StringBuffer chSb = new StringBuffer();
int len = c.length;
List list = new ArrayList();
String d = "";
for (int i = 0; i < c.length; i++) {
// 如果有几个0挨在一起时, 只显示一个零即可
if (i > 0 && c[i] == '0' && c[i] == c[i - 1]) {
--len;
continue;
}
// 得到数字对应的中文
chSb.append(getChinese(c[i]));
// 非零时, 显示是几佰, 还是几仟
if (!getChinese(c[i]).equals("零")) {
d = digit[--len];
list.add(d);// 当数字中有万和十万时, 要去掉十万
chSb.append(d);
} else {
--len; // 如果是0则不取位数
}
}
String chStr = chSb.toString();
// 如果同时包含有万和十万, 则将十万中的万去掉
if (list.contains("万") && list.contains("拾万")) {
chStr = chStr.replaceAll("拾万", "拾");
}
if (list.contains("万") && list.contains("佰万")) {
chStr = chStr.replaceAll("佰万", "佰");
}
if (list.contains("万") && list.contains("仟万")) {
chStr = chStr.replaceAll("仟万", "仟");
}
// 如果同时包含亿和十亿, 则将十亿中的亿字去掉
if (list.contains("亿") && list.contains("拾亿")) {
chStr = chStr.replaceAll("拾亿", "拾");
}
if (list.contains("亿") && list.contains("佰亿")) {
chStr = chStr.replaceAll("佰亿", "佰");
}
if (list.contains("亿") && list.contains("仟亿")) {
chStr = chStr.replaceAll("仟亿", "仟");
}
if (list.contains("亿") && list.contains("万亿")) {
chStr = chStr.replaceAll("万亿", "万");
}
&nbs
补充:软件开发 , Java ,