tomar dos decimles de un double

Miguel
29 de Enero del 2005
Hola me gustaría saber sise pueden tomar dos decials de un double. por ejemplo si tengo el double 33.333333, me gustria quedarme únicamente con 33.33

agradecería la ayuda

saludos

Miguel
29 de Enero del 2005
ya tengo la solución la dejo aquí para el que le pueda interesar

Si d es tu double inicial:
double d2=Math.round(d*100)/100.0 es el doble con sólo dos decimales.

Ojo que redondea: 0,006 pasaria a ser 0,01.

Lemony Snicket
29 de Enero del 2005
Hola,...

La solución de Miguel funciona perfectamente, sin embargo existen clases y funciones optimizadas para este tipo de tareas que evitan los problemas que pudieran surgir derivados del uso del operador de división, como pérdida de precisión, underflow, etc... Te pongo un ejemplo comparativo...

import java.text.*;
import java.util.*;
import java.math.*;

public class FormatoDecimal{

public static void main (String args[]){
double d = 33.33433;
System.out.println("Formateando.... "+d);

// CON DECIMALFORMAT
String patron = "##.00";
DecimalFormat df= new DecimalFormat(patron);
StringBuffer result = new StringBuffer();
StringBuffer s = df.format(d, result, new FieldPosition(0));
System.out.println("Con DecimalFormat: "+s.toString());

// CON NUMBERFORMAT
String resultado = null;
NumberFormat formatoDecimal = NumberFormat.getInstance(new Locale("es","ES"));
formatoDecimal.setMinimumFractionDigits(2);
formatoDecimal.setMaximumFractionDigits(2);
resultado = formatoDecimal.format(d);
System.out.println("Con NumberFormat: "+resultado);

// CON ROUND
double d2=Math.round(d*100)/100.0;
System.out.println("Con Round:"+d2);
}

}

Espero que te sirva. Un saludo.