关于java:舍入到小数点后2位

Round to 2 decimal places

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Round a double to 2 significant figures after decimal point

我有:

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

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


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

1
2
3
4
5
6
public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

你可以打电话给

1
round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

"精度"是您想要的小数点数量。


只需使用math.round()。

1
2
3
double mkm = ((((amountdrug/fluidvol)*1000f)/60f)*infrate)/ptwt;

mkm= (double)(Math.round(mkm*100))/100;


1
double formattedNumber = Double.parseDouble(new DecimalFormat("#.##").format(unformattedNumber));

为我工作:)


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


乘以1000,四舍五入,再除以1000。

对于基本的Java:HTTP://ListBoo.Oracle .COM/JavaSe/TutoRale/GETSARTID/NETX.HTML和HTTP://DeLoad .Oracle .COM/JavaSe/TutoRale/Java/Nojx.HTML


尝试:

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


创建一个名为Round的类,并尝试在代码中使用Round as Round.Round方法(TargetValue,RoundToDecimalPlaces)

1
2
3
4
5
6
7
8
9
10
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));
        }

    }