Я хочу форсировать два формата цифр после десятичного числа, но мое приложение получает сбой при входе в систему.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")));