如何在Java中将double舍入到两位小数?

72

这是我用来将一个双精度数舍入到小数点后2位的方法:

amount = roundTwoDecimals(amount);

public double roundTwoDecimals(double d) {
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    return Double.valueOf(twoDForm.format(d));
}

如果amount=25.3569或类似于此的数,这个方法非常好用。但是如果amount=25.00或amount=25.0,那么结果会是25.0!我想做到同时四舍五入并格式化为2位小数。


这个函数在安卓上有时会返回逗号而不是点,因此 Double.valueOf() 会抛出异常。 - max4ever
21个回答

0
你可以使用这个函数。
import org.apache.commons.lang.StringUtils;
public static double roundToDecimals(double number, int c)
{
    String rightPad = StringUtils.rightPad("1", c+1, "0");
    int decimalPoint = Integer.parseInt(rightPad);
    number = Math.round(number * decimalPoint);
    return number/decimalPoint;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接