我希望在十進制後強制使用兩位數字格式,但當我登錄時,我的應用程序崩潰。java.lang.IllegalArgumentException十進制格式
Log.v("log", new DecimalFormat("00.00").format("62.42"));
我希望在十進制後強制使用兩位數字格式,但當我登錄時,我的應用程序崩潰。java.lang.IllegalArgumentException十進制格式
Log.v("log", new DecimalFormat("00.00").format("62.42"));
DecimalFormat
繼承Format#format(Object)
委託給DecimalFormat#format(Object, StringBuffer, FieldPosition)
。這是作爲
public final StringBuffer format(Object number,
StringBuffer toAppendTo,
FieldPosition pos) {
if (number instanceof Long || number instanceof Integer ||
number instanceof Short || number instanceof Byte ||
number instanceof AtomicInteger ||
number instanceof AtomicLong ||
(number instanceof BigInteger &&
((BigInteger)number).bitLength() < 64)) {
return format(((Number)number).longValue(), toAppendTo, pos);
} else if (number instanceof BigDecimal) {
return format((BigDecimal)number, toAppendTo, pos);
} else if (number instanceof BigInteger) {
return format((BigInteger)number, toAppendTo, pos);
} else if (number instanceof Number) {
return format(((Number)number).doubleValue(), toAppendTo, pos);
} else {
throw new IllegalArgumentException("Cannot format given Object as a Number");
}
}
所以你看,你不能傳遞一個String
說法。
字符串62.42
已按照您的要求格式化。
它應該與你做得很好。
Log.v("log", new DecimalFormat("00.00").format(62.42));
但如果你認爲你必須有字符串作爲輸入,然後解析到雙第一,然後執行操作:
Log.v("log", new DecimalFormat("00.00").format(Double.parseDouble("62.42")));