舍入到小数点后2位

时间:2010-08-29 18:25:14

标签: java android

  

可能重复:
  Round a double to 2 significant figures after decimal point

我有:

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

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

7 个答案:

答案 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)

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

    }