数字格式始终返回异常

时间:2014-06-03 10:00:37

标签: java number-formatting

我有以下代码

private boolean isRightMoneyValue(String value, String currencyIso) {
        Locale locale = new Locale(currencyIso);
        NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(locale);
        try {
            currencyFormatter.format(value);
        } catch (Exception e) {
            return false;
        }
        return true;
    }

此功能的输入为“1234567898.06789”作为值和“EUR”s currencyIso。 该方法总是导致异常。 不知道这里有什么问题。

1 个答案:

答案 0 :(得分:3)

Formatter#format方法需要双倍值。因此,您应该传递d​​ouble值而不是String

 private static boolean isRightMoneyValue(double value, String currencyIso) {
    Locale locale = new Locale(currencyIso);
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(locale);
    try {

        currencyFormatter.format(value);
    } catch (Exception e) {
        return false;
    }
    return true;
}

比调用这个方法,

  boolean isValid = isRightMoneyValue(1234567898.06789,"EUR");