2017-01-26 5 views
3

Ich versuche, die nächsten Zahlen zu 0 zu berechnen, aber konnte nicht bekommen, was ich bisher will.Berechnen der nächsten Zahlen numpy

Ich habe einen ziemlich einfachen Code;

y = 0.0 
x = 0.1 
while (y + x > y): 
    x = x/2.0 
x*2 

Aber ich bekomme immer 0,0 als Ausgabe. Wie kann ich dieses Problem beheben

Antwort

5

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 
3

Vielleicht suchen Sie nur für minimal float Nummer:

import sys 
print(sys.float_info.min) 
Verwandte Themen