python - Square Root of Floats Error -
i created simple square root program , print response elif b > x when using floats. however, if used integers works (but means can't find square root of 9.61, example).
here program:
x = float(raw_input("what number? ")) = 1.0 b = a*a while true: if b == x: print "the answer is", break elif b > x: #print "a = ",a #print "x = ",x print "that beyond computing power. sorry." break elif b < x: = + 0.1 b = a*a continue
your problem checking floating point equality.
the final iteration of loop comparing 3.1 * 3.1 against 9.61, , (the floating point representation of...) 3.1 * 3.1 greater 9.61, terminates loop "beyond computing power".
>>> 3.1 * 3.1 == 9.61 false >>> 3.1 * 3.1 > 9.61 true >>> 3.1 * 3.1 9.6100000000000001 if want compare floating point numbers this, check difference between them small enough (epsilon), instead of checking equality.
if want explore more numeric methods root finding, read wikipedia article on newton-raphson method.
(note: rational numbers can represented floats, loop might able find square root of 3.61, example.)
Comments
Post a Comment