java.lang.IllegalArgumentException十进制格式

时间:2014-01-11 14:09:46

标签: java android decimalformat

我希望在十进制之后强制使用两位数格式,但是当我登录时我的应用程序会崩溃。

Log.v("log", new DecimalFormat("00.00").format("62.42"));

2 个答案:

答案 0 :(得分:3)

它可以和你一起做。

Log.v("log", new DecimalFormat("00.00").format(62.42));

但是如果您认为必须将String作为输入,则先将其解析为Double,然后执行操作:

Log.v("log", new DecimalFormat("00.00").format(Double.parseDouble("62.42")));

答案 1 :(得分:2)

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已按您希望的方式格式化。