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。请帮忙。
答案 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