Home > Foro de Java >

Debates de Java

> Como redondear un decimal en java
Foro de Java
Foro de Java
1 Curso online | 3440 Debates | 214 Documentos | 2 Vídeos | 1 Blog | 35 Imágenes | 6589 Miembros

COMO REDONDEAR UN DECIMAL EN JAVA

mario
Bolivia, Bolivia
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

compartir


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.


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);
    }
}


Escrito por Kyerte el 03/05/2009

[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


Escrito por Kyerte el 03/05/2009

[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


Oriol Sanuy Poca
Administración de sistemas informático...
Escrito por Oriol Sanuy Poca el 20/04/2010

La clase que va muy bien en estos casos es la BigDecimal.

// get importeBrutoMensual and round to 2 decimal places
BigDecimal importeBrutoMensual = new BigDecimal(diasMes). Multiply(importeDiaGlobal);
importeBrutoMensual = importeBrutoMensual. SetScale(2,RoundingMode. HALF_EVEN);

Tiene este metodo. SetScale() al cual les pasas este enumerador (java.Math.RoudingMode) que te permite hacer redondeos de distintos tipos. El dos es el nº de digitos que quieres mostrar.

Pero el DecimalFormat tb. Va bien creo.

Saludos.





Karla Moran
Morelos, México
Escrito por Karla Moran el 03/06/2010

Quiero redondear un decimal a 2 digitos precisos o a cualquier cantidad?

Por ejemplo:

10. 3448------------redondeado ---------- 10. 34

Si queda asi o seria 10. 35

cuano es menor de 5 se deja asi o sube o se baja


Anonimo Tambien
Bristol, Ecuador
Escrito por Anonimo Tambien el 24/01/2011

Pendejos pongan una clase para poder descargar! Idiotas

Sonsos


Fernando Buitrago Arboleda
Tecnologia sistemas de informacion itm
Escrito por Fernando Buitrago Arboleda el 04/02/2011

Hermano,
La clase DecilmalFormat te devuelve un String como tu quieras con los decimales que necesites. Solo debes enviarle un Patron como parametro.
Y con la clase Math puedes redondearlo, esta última si te devolverá un número.


Laia Espinosa
Huesca, España
Escrito por Laia Espinosa el 05/04/2011

Hola, ampliando la respuesta de Chuidiang , a ver que os parece este metodo que permite indica a que nº de decimales queremos redondear:


public double redondear( double numero, int decimales ) {

int numeroEntero = 0;

double numeroDivision = 1. 0;

for(int i=1;i<=decimales;i++){

numeroDivision = numeroDivision * 10. 0;

}

numeroEntero = (int)(numero * numeroDivision);

double valor = numeroEntero / numeroDivision;

return valor;

}



Saludos

Laia



Geovanny Romero
Sistemas universidad regional autonoma...
Escrito por Geovanny Romero el 29/06/2011

PAra nomas de esito mas el problema hermanos si solo es este codiguito....

Double x = 18. 2079999;
DecimalFormat formateador = new DecimalFormat("###0. ##");
x = formateador. Parse(formateador. Format(x)). DoubleValue();
System.out.println(x);

Arreglemos x fa demos respuestas claras.....




Wily Flores
Tarija, Bolivia
Escrito por Wily Flores el 17/11/2012

dada una matriz con numeros de tipo float, devolver la misma matriz con sus datos redondeados a 3 cifras decimales.


Wily Flores
Tarija, Bolivia
Escrito por Wily Flores el 17/11/2012

dada una matriz con numeros de tipo float, devolver la misma matriz con sus datos redondeados a 3 cifras decimales.




Responder


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

Debe cumplir las normas de contenido y normas de conducta
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 |  India |  Y próximamente: Brasil | 

Búsquedas frecuentes: aprendizaje por condicionamiento canciones infantiles francesas foro de java comercializar un producto papiroflexia figuras

EMAGISTER Servicios de formación, S.L. Copyright 1999/2013.