舍入到2位小数位

可能重复:
将小数点后两位有效数字取整为2位

我有:

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

在我的Java代码中。 代码工作正常,但返回到小数点后几位。 我如何限制到2或3?

Solutions Collecting From Web of "舍入到2位小数位"

不要使用双打。 你可能会失去一些精确度。 这是一个通用function。

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

你可以用它来调用它

 round(yourNumber, 3, BigDecimal.ROUND_HALF_UP); 

“精确度”是您所希望的小数点数。

只要使用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)); 

为我工作:)

乘以1000,再乘以1000。

对于基本的Java: http : //download.oracle.com/javase/tutorial/getStarted/index.html和http://download.oracle.com/javase/tutorial/java/index.html

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

尝试:

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

创build一个名为Round的类,并尝试在代码中使用round.round(targetValue,roundToDecimalPlaces)方法

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