私は非常に奇妙なバグに遭遇しました。コード内のコメントを読んで、バグが正確に何であるかを確認しますが、基本的に1を法とする変数は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