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));
}
}
Multiplique por 1000, redondee y divida por 1000.
Para Java básico: http://download.oracle.com/javase/tutorial/getStarted/index.html y http://download.oracle.com/javase/tutorial/java/index.html
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 :)