我有以下代码
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。 该方法总是导致异常。 不知道这里有什么问题。
答案 0 :(得分:3)
Formatter#format方法需要双倍值。因此,您应该传递double值而不是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");