Home > Foro de Java >

Debates de Java > Como redondear un decimal en java

Como redondear un decimal en java

Escrito por Mario Flores el 07/04/2008

Como podria redondear un decimal a 2 digitos precisos o a cualquier cantidad?

Por ejemplo:

2. 4571------------redondeado ---------- 2. 46


Citar  |  
Ver mensaje      

Chuidiang Chuidiang
Madrid, España
Escrito por Chuidiang Chuidiang el 07/04/2008

Hola:

Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .

Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.

Int numero = (int)(valor * 100);
valor = numero/100. 0;

Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.

Se bueno.


Citar  |  
Ver mensaje     

Josedev
Sonora, México
Escrito por Josedev el 23/04/2008

Este programa tiene las funciones para dado un número, lo redondee por los decimales que quieras...

Suerte..... Si tienes mas dudas, visita el siguiente blog: http://javaoficial.blogspot.com

Public class consola {

    public static void main (String[] args) {
 double x = 1. 23456789;
 float y = 9. 87654f;
 double z;
 float w;

 z = round(x,2);
 System.out.println(z);
 z = round(x,5);
 System.out.println(z);

 System.out.println();

 w = round(y,3);
 System.out.println(w);
 w = round(y,0);
 System.out.println(w);
    }

    /**
     * Round a double value to a specified number of decimal
     * places.
     *
     * @param val the value to be rounded.
     * @param places the number of decimal places to round to.
     * @return val rounded to places decimal places.
     */
    public static double round(double val, int places) {
 long factor = (long)Math. Pow(10,places);

 // Shift the decimal the correct number of places
 // to the right.
 val = val * factor;

 // Round to the nearest integer.
 long tmp = Math. Round(val);

 // Shift the decimal the correct number of places
 // back to the left.
 return (double)tmp / factor;
    }

    /**
     * Round a float value to a specified number of decimal
     * places.
     *
     * @param val the value to be rounded.
     * @param places the number of decimal places to round to.
     * @return val rounded to places decimal places.
     */
    public static float round(float val, int places) {
 return (float)round(double)val, places);
    }
}


Citar  |  
Ver mensaje     

Escrito por Kyerte el 3 de Mayo

[quote]Hola:
Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .
Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.
int numero = (int)(valor * 100);
valor = numero/100. 0;
Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.

Se bueno. [/quote]

Muchas gracias carnal, no sabía que teníamos que poner el 100 como float también para que no lo tomara como un entero. Me hiciste un gran paro


Citar  |  
Ver mensaje     

Escrito por Kyerte el 3 de Mayo

[quote]Hola:
Normalmente, el redondeo se hace sólo para presentación en pantalla. Si es así, puedes usar la clase DecimalFormat .
Si quieres realmente eliminar los decimales de la variable de forma que sólo queden dos decimales, debes multiplicar por 100, convertir a entero eliminando el resto de decimales y luego volver a dividir por 100.
int numero = (int)(valor * 100);
valor = numero/100. 0;
Es importante poner el punto cero al dividir entre 100. 0 para que la división no se considere entera y de decimales.

Se bueno. [/quote]

Muchas gracias carnal, no sabía que teníamos que poner el 100 como float también para que no lo tomara como un entero. Me hiciste un gran paro


Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: glicoisdin birads 2 dolor de brazos mucina en la orina hiporexia

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos