truncar round redondear numeros float decimales con java

java - round - ¿Cómo redondear el doble valor a 2 decimales?



redondear a dos decimales java (8)

Posible duplicado:
redondo doble a dos decimales en java

Quiero redondear el doble valor hasta 2 decimales.

por ejemplo: tengo doble d = 2; y el resultado debe ser result = 2.00


Esto lo haría.

public static void main(String[] args) { double d = 12.349678; int r = (int) Math.round(d*100); double f = r / 100.0; System.out.println(f); }

Puedes abreviar este método, es fácil de entender, es por eso que escribí así.


Supongo que necesitas una salida formateada.

System.out.printf("%.2f",d);


También puedes usar este código.

public static double roundToDecimals(double d, int c) { int temp = (int)(d * Math.pow(10 , c)); return ((double)temp)/Math.pow(10 , c); }

Te da el control de cuántos números después del punto son necesarios.

d = number to round; c = number of decimal places

creo que será útil


No hay diferencia en la representación interna entre 2 y 2.00. Puedes usar Math.round para redondear un valor al entero más cercano: para hacer esa ronda con 2 decimales, puedes multiplicar por 100, redondear y luego dividir por 100, pero no debes esperar que el resultado sea exactamente 2dps. debido a la naturaleza de la aritmética binaria en coma flotante.

Si solo está interesado en dar formato a un valor con dos decimales, mire a DecimalFormat ; si está interesado en un número de decimales mientras calcula , realmente debería estar usando BigDecimal . De esta forma sabrá que realmente está tratando con dígitos decimales, en lugar de "el valor double disponible más cercano".

Otra opción que puede considerar si siempre está tratando con dos lugares decimales es almacenar el valor como BigInteger o BigInteger , sabiendo que es exactamente 100 veces el valor "real"; por ejemplo, almacenar centavos en lugar de dólares.


Math.round(number*100.0)/100.0;


double RoundTo2Decimals(double val) { DecimalFormat df2 = new DecimalFormat("###.##"); return Double.valueOf(df2.format(val)); }


import java.text.DecimalFormat; public class RoundTest { public static void main(String[] args) { double i = 2; DecimalFormat twoDForm = new DecimalFormat("#.00"); System.out.println(twoDForm.format(i)); double j=3.1; System.out.println(twoDForm.format(j)); double k=4.144456; System.out.println(twoDForm.format(k)); } }


public static double addDoubles(double a, double b) { BigDecimal A = new BigDecimal(a + ""); BigDecimal B = new BigDecimal(b + ""); return A.add(B).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); }