我目前有一个函数,它将输入并将其四舍五入到小数位,它看起来像这样:
public static double table_round(double n) {
return (double) Math.round(n * 10000) / 10000;
}
真的非常简单的功能,但是我想我可以改变它以允许传递第二个变量,说明要舍入的位数,但是我不确定如何打印正确的0的数量在那里的数学语句中(每个0表示将打印一个小数位)。关于如何实现这一点的任何想法?这只是我的java课程的一些额外功劳,我还在学习所以如果有一个简单的解决方案,我很抱歉。
答案 0 :(得分:3)
public static double table_round(double n, int digits) {
return BigDecimal.valueOf(n).setScale(digits,BigDecimal.ROUND_HALF_UP).doubleValue();
}
答案 1 :(得分:0)
您可以使用BigDecimal及其setScale()方法修正小数后的数字
public static double table_round(double n) {
// No of digits you want after decimal.
int digitsAfterDecimal = 5;
BigDecimal bigDecimal = BigDecimal.valueOf(n);
// BigDecimal.ROUND_FLOOR is Rounding Mode..denote how your value is rounded off
// Other ways are:- "ROUND_CEILING", "ROUND_DOWN", etc..
bigDecimal = bigDecimal.setScale(digitsAfterDecimal, BigDecimal.ROUND_FLOOR);
return Double.valueOf(bigDecimal.toString());
}
有关详细信息,请参阅http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial