Redondea a 2 decimales

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?

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; 
 double formattedNumber = Double.parseDouble(new DecimalFormat("#.##").format(unformattedNumber)); 

trabajó para mi 🙂

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

Tratar:

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

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