45 votos

redondear hasta 2 decimales en Java?

He leído muchas preguntas sobre el desbordamiento de la pila pero ninguna parece funcionar para mí. Estoy usando math.round() para redondear. este es el código:

class round{
    public static void main(String args[]){

    double a = 123.13698;
    double roundOff = Math.round(a*100)/100;

    System.out.println(roundOff);
}
}

la salida que obtengo es: 123 pero quiero que sea 123.14 Leí que al agregar *100/100 ayudará, pero como puedes ver, no logré que funcionara.

es absolutamente esencial que tanto la entrada como la salida sean dobles.

sería de gran ayuda si cambias la línea 4 del código de arriba y lo publicas.

144voto

SiB Puntos 5284

Bueno, este funciona...

double roundOff = Math.round(a * 100.0) / 100.0;

La salida es

123.14

O como @Rufein dijo

 double roundOff = (double) Math.round(a * 100) / 100;

esto también lo hará para ti.

41voto

amitchhajer Puntos 4087
     double d = 2.34568;
     DecimalFormat f = new DecimalFormat("##.00");
     System.out.println(f.format(d));

17voto

Arun Puntos 343
String roundOffTo2DecPlaces(float val)
{
    return String.format("%.2f", val);
}

11voto

Reimeus Puntos 93429
BigDecimal a = new BigDecimal("123.13698");
BigDecimal roundOff = a.setScale(2, BigDecimal.ROUND_HALF_EVEN);
System.out.println(roundOff);

6voto

philippe Puntos 2046

Vuelve a tu código, y reemplaza 100 por 100.00 y hazme saber si funciona. Sin embargo, si quieres ser formal, prueba esto:

import java.text.DecimalFormat;
DecimalFormat df=new DecimalFormat("0.00");
String formate = df.format(value); 
double finalValue = (Double)df.parse(formate) ;

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X