truncar round redondear numeros limitar float decimales con java android

java - round - Redondea a 2 decimales



redondear en java (7)

Posible duplicado:
Redondea un doble a 2 figuras significativas después del punto decimal

Yo tengo:

mkm=((((amountdrug/fluidvol)*1000)/60)*infrate)/ptwt;

en mi código de Java El código funciona bien, pero vuelve a varios lugares decimales. ¿Cómo lo limito a solo 2 o 3?


Cree una clase llamada Round e intente utilizar el método round como Round.round (targetValue, roundToDecimalPlaces) en su código

public class Round { public static float round(float targetValue, int roundToDecimalPlaces ){ int valueInTwoDecimalPlaces = (int) (targetValue * Math.pow(10, roundToDecimalPlaces)); return (float) (valueInTwoDecimalPlaces / Math.pow(10, roundToDecimalPlaces)); } }



No uses dobles Puedes perder algo de precisión. Aquí hay una función de propósito general.

public static double round(double unrounded, int precision, int roundingMode) { BigDecimal bd = new BigDecimal(unrounded); BigDecimal rounded = bd.setScale(precision, roundingMode); return rounded.doubleValue(); }

Puedes llamarlo con

round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

"precisión" es la cantidad de decimales que desea.


Solo usa Math.round ()

double mkm = ((((amountdrug/fluidvol)*1000f)/60f)*infrate)/ptwt; mkm= (double)(Math.round(mkm*100))/100;


Tratar:

float number mkm = (((((amountdrug/fluidvol)*1000f)/60f)*infrate)/ptwt)*1000f; int newNum = (int) mkm; mkm = newNum/1000f; // Will return 3 decimal places


BigDecimal a = new BigDecimal("12345.0789");
a = a.divide(new BigDecimal("1"), 2, BigDecimal.ROUND_HALF_UP);
//Also check other rounding modes
System.out.println("a >> "+a.toPlainString()); //Returns 12345.08


double formattedNumber = Double.parseDouble(new DecimalFormat("#.##").format(unformattedNumber));

trabajó para mi :)