我想编写一个函数来查找给定乘数的数字的下一个倍数。源编号和乘数都可以是浮点数。

预期:

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;

这适用于所有测试用例...

07-24 14:48