Я наткнулся на очень странную ошибку. Прочитайте комментарии в коде, чтобы увидеть, в чем именно заключается ошибка, но по сути переменная по модулю 1 возвращает 1 (но она не равна 1!). Я предполагаю, что есть проблема с отображением, когда поплавок очень близок к единице, но не совсем. Тем не менее, он должен модулироваться до нуля. Я не могу проверить это легко, потому что (последний% 1)! = 1.0! Когда я пытаюсь подключить те же номера в другой терминал Python, все ведет себя правильно. Что происходит?
def r(k,i,p):
first = i*p
last = first + p
steps = int((i+1)*p) - int(i*p)
if steps < 1:
return p
elif steps >= 1:
if k == 0:
return 1 - (first % 1)
elif k == steps:
if i == 189:
print last, 1, type(last), last % 1, last - int(last)
# Prints: 73.0 1 <type 'float'> 1.0 1.0
print last % 1 == 1 # Returns False
if last % 1 == 1.0:
return 0
return (last % 1)
else:
return 1