可能重复:
Round a double to 2 significant figures after decimal point
我有:
mkm=((((amountdrug/fluidvol)*1000)/60)*infrate)/ptwt;
在我的Java代码中。代码工作正常,但返回到几个小数位。如何将其限制为2或3?
答案 0 :(得分:90)
不要使用双打。你可能会失去一些精确度。这是一个通用功能。
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);
“precision”是您想要的小数点数。
答案 1 :(得分:11)
只需使用Math.round()
double mkm = ((((amountdrug/fluidvol)*1000f)/60f)*infrate)/ptwt;
mkm= (double)(Math.round(mkm*100))/100;
答案 2 :(得分:8)
double formattedNumber = Double.parseDouble(new DecimalFormat("#.##").format(unformattedNumber));
为我工作:)
答案 3 :(得分:1)
乘以1000,舍入,然后再除以1000。
对于基本Java:http://download.oracle.com/javase/tutorial/getStarted/index.html和http://download.oracle.com/javase/tutorial/java/index.html
答案 4 :(得分:1)
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
答案 5 :(得分:0)
尝试:
float number mkm = (((((amountdrug/fluidvol)*1000f)/60f)*infrate)/ptwt)*1000f;
int newNum = (int) mkm;
mkm = newNum/1000f; // Will return 3 decimal places
答案 6 :(得分:-2)
创建一个名为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));
}
}