我有数字(十进制)我想将它舍入到"最接近的50":
如何用java/groovy做到这一点?
我相信djechlin的解决方案几乎是正确的,他只是遗漏了一些部分.
(x + 49)/ 50*50;
这是有效的,因为在Java中,整数除法的结果是整数(结果被截断).为了向我解释,这里有你的例子,其中一个数字的另一个例子已经是50的倍数:
122 + 49 => 171 / 50 => 3 * 50 => 150
177 + 49 => 226 / 50 => 4 * 50 => 200
157 + 49 => 206 / 50 => 4 * 50 => 200
57 + 49 => 106 / 50 => 2 * 50 => 100
37 + 49 => 86 / 50 => 1 * 50 => 50
1557 + 49 => 1606 / 50 => 32 * 50 => 1600
3537 + 49 => 3586 / 50 => 71 * 50 => 3550
150 + 49 => 199 / 50 => 3 * 50 => 150
Run Code Online (Sandbox Code Playgroud)
Groovy x + (50 - (x % 50 ?: 50)):
def round50up = { int x ->
x + ( 50 - ( x % 50 ?: 50 ) )
}
assert round50up( 122 ) == 150
assert round50up( 177 ) == 200
assert round50up( 157 ) == 200
assert round50up( 57 ) == 100
assert round50up( 37 ) == 50
assert round50up( 1557 ) == 1600
assert round50up( 3537 ) == 3550
assert round50up( 100 ) == 100
assert round50up( 200 ) == 200
assert round50up( 250 ) == 250
Run Code Online (Sandbox Code Playgroud)
测试一下here.
| 归档时间: |
|
| 查看次数: |
10483 次 |
| 最近记录: |