我想将double值舍入到下一个偶数整数。例如:
我尝试了Math.rint()
,但它给了我489而不是490.
答案 0 :(得分:9)
简单地:
public static long roundEven(double d) {
return Math.round(d / 2) * 2;
}
给出:
System.out.println(roundEven(2.999)); // 2
System.out.println(roundEven(3.001)); // 4
答案 1 :(得分:0)
double foo = 3.7754;
int nextEven;
if (((int)foo)%2 == 0)
nextEven = (int)foo;
else
nextEven = ((int)foo) + 1;
可能会做你需要的事情
答案 2 :(得分:0)
尝试Math.ceil(...)
int roundToNextEven(double d) {
int hlp = (int)Math.ceil(d);
if (hlp%2 == 0)
return hlp;
return hlp-1;
}
这个想法是,如果下一个天花板浮动不均匀,我们必须倒圆而不是圆形到天花板。
您也可以使用Math.floor(...)
..唯一的区别是,如果地板不均匀,您必须舍入到ceil(在结果中加1)
int roundToNextEven(double d) {
int hlp = (int)Math.floor(d);
if (hlp%2 == 0)
return hlp;
return hlp+1;
}