java 格式化金额与数字转换

记录下一些常用的函数,以便下次使用

/**
* 格式化金额
* @param s
* @param len
* @return
*/
public static String formatMoney(String s, int len)
{
if (s == null || s.length() < 1) {
return "";
}
NumberFormat formater = null;
double num = Double.parseDouble(s);
if (len == 0) {
formater = new DecimalFormat("###,###");

} else {
StringBuffer buff = new StringBuffer();
buff.append("###,###.");
for (int i = 0; i < len; i++) {
buff.append("#");
}
formater = new DecimalFormat(buff.toString());
}
String result = formater.format(num);
if(result.indexOf(".") == -1)
{
result = "¥" + result + ".00";
}
else
{
result = "¥" + result;
}
return result;
}

调用该方法

formatMoney("-87094753316.74", 2)

输出格式分:

¥-87,094,753,316.74


将阿拉伯数字转换成对应的大写,不是很完善:

public static String getUpperChineseMoney(String amount) {

if (null==amount||"".equals(amount)||amount.indexOf("-")!=-1)
return "";


if (amount == null||Double.parseDouble(amount)==0) {
return "零元整";
}

boolean islt0 = false;
if(Double.parseDouble(amount) < 0.001){
islt0=true;
amount = (-Double.parseDouble(amount))+"";
}

final String[] upperUnit = {
"万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万",
"仟", "佰", "拾", "元"};
final String[] upperNumber = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒",
"捌", "玖"};
final String[] upperDec = {
"角", "分"};
StringBuffer convertedMoney = new StringBuffer("");
String returnString = "";

try {
System.out.println(amount+"----------------------");
DecimalFormat dcf = new DecimalFormat("###########0.00");
String numString = dcf.format(Double.parseDouble(amount));
System.out.println(numString+"----------------------");
numString=numString.replaceAll(",",".");
System.out.println(numString+"----------------------");
int dotPos = numString.indexOf(".");
String integerStr = numString.substring(0, dotPos);
String decStr = numString.substring(dotPos + 1);
int lenInt = integerStr.length();
int lenDec = 0;
if ("00".equalsIgnoreCase(decStr)) {
lenDec = 0;
} else {
lenDec = 2;
}

if (lenInt > 13) {
return "数字太大";
}

boolean zeroFlg = false;
int lenEmpty = 13 - lenInt;
for (int i = 0; i < lenInt; i++) {
String number = integerStr.substring(i, i + 1);
String unit = upperUnit[lenEmpty + i];
String upNum = upperNumber[Integer.parseInt(number)];
if ("0".equalsIgnoreCase(number)) {
if (!zeroFlg) {
zeroFlg = true;
}
if ("亿".equals(unit) || "万".equals(unit) || "元".equals(unit)) {
convertedMoney.append(unit);
}
} else {
if (zeroFlg) {
convertedMoney.append("零").append(upNum).append(unit);
zeroFlg = false;
} else {
convertedMoney.append(upNum).append(unit);
}
}
}
if (lenDec == 0) {
convertedMoney.append("整");
} else {
String jiao = upperNumber[Integer.parseInt(decStr.substring(0,
1))];
if (!"0".equals(decStr.substring(0, 1))) {
convertedMoney.append(jiao).append(upperDec[0]);
} else {
convertedMoney.append(jiao);
}

String fen = upperNumber[Integer.parseInt(decStr.substring(1, 2))];
if (!"0".equals(decStr.substring(1, 2))) {
convertedMoney.append(fen).append(upperDec[1]);
} else {
convertedMoney.append("整");
}
}

returnString = convertedMoney.toString();
if (judgeUnit(returnString)) {
returnString = returnString.replaceFirst("亿万", "亿");
}

} catch (Exception ex) {
ex.printStackTrace();
return "输入格式不正确!";
}
if(islt0){
returnString="负"+returnString;
}
return returnString;
}


调用该方法

getUpperChineseMoney("54545454");

输出格式分:

伍仟肆佰伍拾肆万伍仟肆佰伍拾肆元整
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值