2015-10-14 4 views
1

Как получить двойное значение, напечатанное в отформатированной строке с минимальной точностью? Пример:Формат Java с двойной точностью до минимальной точности

double v = 2.02; 
String.format("%f", v); 

По умолчанию формат %f всегда печатает 6 digits after point => "2.020000". Что мне нужно

42.0 => "42" 
2.02 => "2.02" 
0.3333333333333333 => "0.3333333333333333" 

Лучшее, что я могу получить до сих пор String.valueOf(v)

String.format("%s", String.valueOf(v)); 

что пройти все тесты, кроме «42». Любые идеи на легким способом делать все три теста?

ответ

0

Как указано на Ясина, есть ggod способ, с помощью пользовательских отформатирован:

public static String fmt(double d) 
{ 
    if(d == (long) d) 
     return String.format("%d",(long)d); 
    else 
     return String.format("%s",d); 
} 
+0

'String.Format ("% s", д)' ??? Расскажите о ненужных накладных расходах. Используйте 'Double.toString (d)'. То же самое для другого: 'Long.toString ((long) d)'. – Andreas

Смежные вопросы