我在输入x
,step
有两个数字。我希望step_1
满足fmod
:
x - int(x / step_1) * step_1 = 0
step_1
必须是最接近且高于输入step
。
例如:
x = 1.0, step = 0.04
我希望step_1
成为0.0625
答案 0 :(得分:0)
这应该给出正确的答案。请注意,step > x/2
:
def getClosestStep(x, step):
try:
step_1 = x/(int(x / step)-1)
except ZeroDivisionError:
return None
return None if step_1 < step else step_1
step_1 = getClosestStep(1, 0.04)
print(step_1) // 0.04166666666666666
上查看它
答案 1 :(得分:0)
我们正在寻找step1
int(x / step1) = x / step1
。
我们想要最小step1 > step
,所以x / step1 < x / step
。因此int(x / step)
已满足此条件,除非int(x / step) = x / step
。所以我们必须区分两种情况。
if int(x / step) = x / step then return x / (x / step - 1)
。
else return x / int(x / step)
。
step >= x
时没有解决方案,因为int(x / step1)
将始终返回0
。
如果x = 0
然后step1 = step + e
,其中e
是大于0的最小数字step + e != step
。