Sé cómo formatear un doble para mantener solo los decimales disponibles (DP), hasta un cierto número de DP. Este ejemplo mantiene hasta 4 DP.Formatea un doble para omitir el ".0" innecesario y nunca redondear
double d = 1.0;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1"
double d = 1.23;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.23"
double d = 1.2345678;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.2346", rounding off: bad!
Ahora quiero números enteros p. Ej. 1.0
para devolver "1"
sin el innecesario .0
, y el carácter de formato #
proporciona esa funcionalidad. ¿Pero cómo me aseguro de que el número nunca se redondea? ¿Hay alguna otra manera que no sea una cadena arbitrariamente larga de #
como "#.###########################################"
?
O debo utilizar la conversión por defecto de doble cadena a, y truncar el ".0"
si aparece al final:
String s = "" + d;
if(s.substring(s.length()-2).equals(".0")) {
s=s.substring(0, s.length()-2);
}
Ambas formas parece terriblemente torpe.
+1 para Wow ... !! – RanRag
incluso si el compilador puede optimizarlo avay Creo que es mejor estilo para usar String.valueOf (x) en lugar de "" + x – rurouni
@rurouni Muchos estarían de acuerdo contigo. Sin embargo, prefiero un código más simple porque es más rápido de leer y escribir, ahorrándole tiempo a todos. Si el rendimiento es un problema, todavía no utilizaría valueOf ya que crea objetos. –