Datos personales

QUITO, Pichincha, Ecuador

lunes, 15 de octubre de 2007

Redondear un Numero a 3 decimales

A veces nos ocurre que al trabajar con numeros double necesitamos que estos se redonden a un cierta cantidad de decimales.
En mi caso estaba haciendo un proyecto en donde se necesita que todos los valores doubles que se maneje , tengan tres decimales.
Existe algunas formas , talves la que aplique les sea de utilidad.
1. Cuando se quiera presentar información con un maximo de dos decimales

public static String DoubleFormat(double parDouble)
{
DecimalFormat formatter = new DecimalFormat("###,##0.000");
String myNumero = formatter.format(parDouble);
return myNumero;
}

Vamos explicar un poco el codigo :
El caracter # nos ayuda a que apareceran valores solo significativos. En nuestro caso le puse tres y después la coma, si fuese el caso de que el numero fuese una cantida de mas de mil le escriba la coma.
Ejemplo
Si ingresamos 84565.2897
nos devolvera la cadena 84,569.290

el carácter 0 nos ayudara a que siempre aparescan valores asi sean estos valores ceros
Ejemplo
Si ingresamos 84565.2
nos devolvera la cadena 84,569.200
si quisiesemos que siempre la cadena nos devuelva seis digitos y dos decimales
escribiriamos haci nuestro metodo
public static String DoubleFormat(double parDouble)
{
DecimalFormat formatter = new DecimalFormat("000,000.00");
String myNumero = formatter.format(parDouble);
return myNumero;
}
Ejemplo si ingresamos 198.2
nos devolvera 000,198.200

2. Redondeando un doble a dos decimales
Buscando en el internet y viendo un poco el api logre encontrar esto que me fue muy util.

public static double redondear( double numero, int decimales )
{
return Math.round(numero*Math.pow(10,decimales))/Math.pow(10,decimales);
}

Si ingresamos redondear(84565.2897 , 3)//este caso necesitamos tres decimales

nos devolvera el numero 84569.29

Cabe mencionar que esto metodo fue probado hasta tres decimales que era lo que yo requeria.
Si quisiense redondear a mas de tres decimales le sugerian que lo hagan con bigdecimal y que lo lean, de seguro les ayudara bastante , almenos si estamos haciendo un proyecto de numerico que maneje errores y probar ciertos teoremas matematicos de erores , etc, ya que big decimal maneja de mejor forma los decimales.

No hay comentarios: