2014-01-11 3 views

ответ

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 уже отформатирована так, как вы хотите.

3

Должно быть хорошо с вами.

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

Но если вы думаете, что вы должны иметь строку в качестве входных данных, а затем разобрать, что в двойной первый, а затем сделать операцию:

Log.v("log", new DecimalFormat("00.00").format(Double.parseDouble("62.42"))); 
Смежные вопросы