Ich denke, man Dividieren wollen halten, bis x so klein wird, Es wird zu Null (im Fließkommaformat). In der letzten Iteration Ihrer Schleife wird x schließlich zu Null und die Schleifenbedingung wird als falsch angezeigt: 0.0(y) + 0.0(x) > 0.0(y)
. In der letzten Zeile versuchen Sie, den x-Wert durch Multiplikation mit zwei zu erhalten. Aber x ist schon Null, also ist das Ergebnis auch Null. Mathematisch macht es total Sinn, aber der Gleitkommawert ist an diesem Punkt bereits Null.
Um eine zweite Variable des neuesten Wert ungleich Null zu halten, verwenden:
y = 0.0
x = 0.1
smallest_x = x
while (y + x > y):
smallest_x = x
x = x/2.0
x*2
Oder alternativ vorher Sie prüfen, ob x Null werden nach divinding einmal mehr:
y = 0.0
x = 0.1
while (y + x/2.0 > y): //checking if the next division makes x to zero
x = x/2.0
x*2
Oder ein nehmen anderer Ansatz, um das kleinste x zu erhalten:
x = 1.0
while (x/2.0 != 0):
x = x/2.0