我想编写一个函数来查找给定乘数的数字的下一个倍数。源编号和乘数都可以是浮点数。
预期:
nextMult(3.654,0.5) = 4.0
nextMult(3.165,0.15) = 3.30
nextMult(3.452,0.002) = 3.452
nextMult(2, 0.3) = 2.1
nextMult(2, 0.2) = 2
nextMult(4, 3) = 6
我当前的解决方案:
public double nextMult(double source, double multiplier)
{
for (double i = (double)((long)source - multiplier); i <= source + multiplier;
i += multiplier)
{
if (i >= source)
return i;
}
}
我不喜欢多种选择。是否有更有效的方法或现有的图书馆解决方案可以做到这一点?
最佳答案
源和乘数都属于:double
double result = Math.ceil(source/multiplier) * multiplier;
这适用于所有测试用例...