作为一个例子,我有两个数字(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
必须有更快/更有效的方法来做到这一点......
答案 0 :(得分:2)
评论太长了。
你是什么意思“围捕”?最简单的解决方案是采用两个数字的比率,发言,并将其除以更大的数字:
select @SheetLength / floor(@SheetLength / @PartLength)
对于您的示例,这给出了1.91666667。