我必须输入一个数字并将最后一位四舍五入为0或5。
我尝试了Math.ceil
或Math.floor
,但它们不起作用。
答案 0 :(得分:2)
将数字int n
四舍五入到最接近的5的倍数:
((n + 2) / 5) * 5;
不需要复杂的逻辑。
更一般地,将int n
舍入为int m
的倍数
((n + (m/2)) / m) * m;
如果您也想使用负数,它将变为:
((n + (n >= 0 ? 2 : -2)) / 5) * 5;
((n + (n >= 0 ? (m/2) : -(m/2)) / m) * m;
答案 1 :(得分:1)
Math.ceil
和Math.floor
用于浮点数(例如Double
)。您没有想要的内置功能,但这应该可以工作
public static int round(int original) {
if original % 10 <= 2 {
return original - (original % 10)
} else if original % 10 <= 7 {
return original - (original % 10) + 5
}
return original - (original % 10) + 10
}
如果您希望它与负数一起使用,请使用以下方法:
public static int round(int original) {
if original % 10 <= 2 {
return original - (original % 10)
} else if original % 10 <= 7 {
return original - (original % 10) + 5
} else if original % 10 <= 9 {
return original - (original % 10) + 10
} else if original % 10 >= -2 {
return original - (original % 10)
} else if original % 10 >= -7 {
return original - (original % 10) - 5
}
return original - (original % 10) - 10
}
很显然,您不能只复制并粘贴此代码,因为您需要将其放入类中,并可能更改可见性和static
的风格(public static
)。 / p>
要使用它,请致电int rounded = round(input)
希望这会有所帮助!
答案 2 :(得分:1)
这是一个简单的函数,可以四舍五入为所需的任何值,它需要两个参数,其中一个是要舍入的数字。另一个是舍入精度(在您的情况下为5)。
public static double roundTo(double toRound, double precision){
double holder = toRound/precision;
int result = (int) Math.round(holder);
return result*precision;
}
答案 3 :(得分:0)
Math.ceil
/ Math.floor
将浮点数四舍五入到最接近的整数。他们根本无法做您想做的事情,那就是找到一个整数的最接近倍数。
您可以采用多种方法来解决此问题。我想这是家庭作业吗?关键不是找到一个库函数来单行执行(这可以帮助我确定没有这样的库函数开箱即用),关键是编写一些基本代码来实现。 / p>
这是一种方法:
您可以使用x % 10
(这是x模10)获得最后一位数字。请注意,-15 % 10
是-5
,而不是5
,然后使用{{ 1}}的结构或几个switch
/ if
语句来根据最后一位数字做正确的事情。
或更棘手的方式:
在Java中对2个整数进行除法时,结果总是四舍五入为整数,方法是仅舍弃逗号后面的位(因此对于正数,它会舍入)。一种以最后一位始终为0或5的数字结尾的方法是除以5,然后再乘以5。但是您确实需要找出一种策略来确保else if
变成13
而不是15
,因此您必须先添加一些内容,然后再进行除法和乘以5.我将把它留给您练习,以弄清楚该如何做以及要添加什么。
答案 4 :(得分:0)
没有内置方法可以实现。您必须自己编写代码。
一种方法可能是计算mod 10并添加差异:
int customRound(int n){
int diff, mod = n % 10;
if(mod < 3) diff = 0;
else if(mod < 8) diff = 5;
else diff = 10;
return n - mod + diff;
}
答案 5 :(得分:0)
实际上四舍五入到最接近的5倍。 四舍五入。
{{1}}
使用此方法,您应该可以创建解决方案。