当前位置: 代码迷 >> J2SE >> 将String类型的数字格式化成逗点加小数点形式如“1234”变成"1,234.00"解决方法
  详细解决方案

将String类型的数字格式化成逗点加小数点形式如“1234”变成"1,234.00"解决方法

热度:158   发布时间:2016-04-24 13:11:22.0
将String类型的数字格式化成逗点加小数点形式如“1234”变成"1,234.00"
能不能帮我分析下 下面这个题目啊
/** (3)
  * 将money格式化成逗点加小数点形式
  * 如:formatMoney("123456")将返回"123,456.00" 
  * formatMoney("1234567.10")将返回"1,234,567.10"
  * 当输入为不合法的数字时抛出异常
  */
public String formatMoney(String money) throw Exception;

------解决方案--------------------
public String formatMoney(String money) throw Exception
{
try{
Interger.pase(money); 
}catch(Exception e)
{
throw IlleageArguException();
}

DicimalFormater formater = new Dicimalformater("###,###,###.00");

return formater.format(money);
}
------解决方案--------------------
package test;

import java.text.DecimalFormat;

public class Testtt {

public String formatMoney(String money) throws Exception {
Double num;
try {
num =Double.parseDouble(money);
} catch (Exception e) {
throw new IllegalArgumentException("please input a number");
}

DecimalFormat formater = new DecimalFormat("###,###.00");

return formater.format(num);
}

public static void main(String[] args) {
Testtt tt = new Testtt();
try {
System.out.println(tt.formatMoney("123456"));
System.out.println(tt.formatMoney("1234567.10"));
} catch (Exception e) {
e.printStackTrace();
}
}
}

------解决方案--------------------
DecimalFormat
------解决方案--------------------

Java code
public static void formatMoney(String money) {        if (!money.matches("(?!(\\.|[0]{2,}))[\\d\\.]*(?<!\\.)")){            System.out.println("Invalid Number");            return;        }        int integralNumber = money.indexOf('.');        int newCharLength = (integralNumber - 1) / 3 + money.length();        char[] c = new char[newCharLength];        for (int i = integralNumber % 3; i < integralNumber; i += 3) {            if (i != 0) {                c[i++] = ',';            }        }        int count = 0;        for (int i = 0; i < newCharLength; i++) {            if (c[i] != ',') {                c[i] = money.charAt(count++);            }        }        System.out.println("The answer is: ");        System.out.println(c);    }
------解决方案--------------------
Java code
public class Test {    public static void main(String[] args) {        String str = "1234567";        System.out.println(formatMoney(str));        str = "1234567.10";        System.out.println(formatMoney(str));    }        public static String formatMoney(String money) {        if(!money.matches("\\d+(\\.\\d{1,2})?")) {            throw new IllegalArgumentException("money format error!");        }        int pointIndex = money.indexOf(".");        if(pointIndex < 0) {            money = money + ".00";        }        if(pointIndex == money.length() - 2) {            money = money + "0";        }        money = money.replaceAll("(?<=\\d)(?=(?:\\d\\d\\d)+\\.)", ",");        return money;    }}
------解决方案--------------------
使用DecimalFormat或者,你有时间,也可以试试NumberFormat 
同意2楼的做法。
------解决方案--------------------
money = money.replaceAll("(?<=\\d)(?=(?:\\d\\d\\d)+\\.)", ",");
  相关解决方案