Java 如何将双精度整数四舍五入到最接近的偶数
我想将一个双精度值舍入到下一个偶数整数。e、 g:Java 如何将双精度整数四舍五入到最接近的偶数,java,math,Java,Math,我想将一个双精度值舍入到下一个偶数整数。e、 g: 489.5435至490 2.7657至2 我试过Math.rint(),但它给我的是489而不是490 double foo = 3.7754; int nextEven; if (((int)foo)%2 == 0) nextEven = (int)foo; else nextEven = ((int)foo) + 1; 可能会做您需要的事情只需: public static long roundEven(doubl
- 489.5435至490
- 2.7657至2
Math.rint()
,但它给我的是489而不是490
double foo = 3.7754;
int nextEven;
if (((int)foo)%2 == 0)
nextEven = (int)foo;
else
nextEven = ((int)foo) + 1;
可能会做您需要的事情只需:
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
尝试Math.ceil(…)
这个想法是,如果下一个天花板浮动不均匀,我们必须绕到地板而不是天花板
您还可以使用Math.floor(…)
。。唯一的区别是,如果地板不均匀,您必须舍入天花板(结果加1)
int roundToNextEven(double d) {
int hlp = (int)Math.floor(d);
if (hlp%2 == 0)
return hlp;
return hlp+1;
}
为什么
489.5435
被提升到下一个整数值,而2.7657
只得到计算的整数部分?你有没有尝试过“Math.ceil(double)”?你说的“下一个直数”是指最近的偶数?是的,我需要一个偶数(x%y=0)。@MuratK。是的,它是。。。它根据需要给出4。他不想让数字四舍五入,但他想得到下一个偶数^^^@MuratK。根据SO 2.7657应变为2。所以4.8应该变成4。。。这是最接近4.8的偶数。不幸的是,我还不允许使用if/else。我们“还不知道”。大学,第一学期…@Jannis那么你应该看看Jean Logeart的答案!他可以不用if/else来做这件事;)
int roundToNextEven(double d) {
int hlp = (int)Math.floor(d);
if (hlp%2 == 0)
return hlp;
return hlp+1;
}