舍入数字,直到它可以被整除为另一个数字 - 不限于整数

时间:2015-09-01 14:25:45

标签: sql sql-server

作为一个例子,我有两个数字(40.25& 1.88001)。实际上,这两个数字可以是任何数字,最多五位小数。但是,第二个数字将始终为< =第一个数字。

我需要向上舍入1.88001,直到它可以被整除到40.25。我需要找到一个大于和最接近1.88001的因子40.25。

如果需要,我需要保持小数精度,这意味着我不能四舍五入到最接近的整数,除非整数确实是最接近的因素。

我发现其他类似的解决方案/问题,但没有找到适用和/或SQL相关的解决方案/问题。

到目前为止,我的蛮力解决方案太慢而无法实现:

    Declare @SheetLength as money = 40.25
    Declare @PartLength as money = 1.88001

    WHILE @SheetLength % @PartLength > 0
        BEGIN
        @PartLength = @PartLength + .00001
        END

    Select @PartLength

必须有更快/更有效的方法来做到这一点......

1 个答案:

答案 0 :(得分:2)

评论太长了。

你是什么意思“围捕”?最简单的解决方案是采用两个数字的比率,发言,并将其除以更大的数字:

select @SheetLength / floor(@SheetLength / @PartLength)

对于您的示例,这给出了1.91666667。