舍入到某个小数位并四舍五入到ceil或floor

时间:2014-10-16 01:35:08

标签: java numbers rounding

private static double round (double value, int precision) {
    int scale = (int) Math.pow(10, precision);
    return (double) Math.round(value * scale) / scale;
}

我希望这段代码不仅可以舍入到任何给定的小数位,而且可以总是向上或向下舍入,这可以作为另一个参数给出。但我在如何实现这个问题上遇到了麻烦。

例如,我想将11.1436转为11.15。请帮忙。

1 个答案:

答案 0 :(得分:-1)

就像你说你必须使用数学ceil来向上舍入,所以你可以传递true如果你想要向上舍入或者你可以传递false来舍入它 你可以用

math.floor-->round down
math.ceil -->round up 

代替math.round

private static double round (double value, int precision,boolean up) {
int scale = (int) Math.pow(10, precision);
if(up){
    return (double) Math.ceil(value * scale) / scale;
}else{
   return (double) Math.floor(value * scale) / scale;
}

输出>>

 System.out.println(round(11.1436, 2,true)); --> 11.15 //up
 System.out.println(round(11.1436, 2,false)); --> 11.14 //down