java 格式化金额_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");

输出格式分:

伍仟肆佰伍拾肆万伍仟肆佰伍拾肆元整

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-12-14 13:49

浏览 14636

评论

3 楼

cmyx2008love

2012-08-08

1005.23的结果是?

100.23

100.00

12300.01

judgeUnit  这个方法没贴

2 楼

txin0814

2012-08-08

cmyx2008love 写道

BUG

ccf5e5c2a4777a14201b1dce9adb5168.gif

恩 说说

1 楼

cmyx2008love

2012-08-07

BUG

ccf5e5c2a4777a14201b1dce9adb5168.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值