|
|
|
|
Attention |
Topic was automatically imported from the old Question2Answer platform. |
|
Asked By |
Andrea |
Hello,
it already happened a few times in my project:
x=result_from_complex_calculation()
if x<0 or x>1:
print(x)
else:
print("ok")
Would sometimes print “1”, even if i’st not possible (if x=1, it should print “OK”).
I suppose the actual value is slighlty superior to 1 and rounded in some weird way.
Similar stuff happened with 0 and -0
Note that x is a float variable.
What’s wrong with it?
|
|
|
|
Reply From: |
jgodfrey |
You’re most certainly being bitten by the print
statement here. In that form, the value being printed (x
) is converted to a string automatically. And, while I don’t know the details of how precision is handled in that case, your value is sufficiently close enough to 1
to simply be written as 1
.
You can explicitly ask for more precision in the print statement by doing something like this:
print("%.15f" % [x])
That’ll print the value for x
out to 15 decimal places (for example).
Ultimately, I’m confident that your value really is greater than 1
. The default print mechanism just isn’t displaying it that way.
yep! that’s it, with your code it showed 1.0000000000000001
Andrea | 2020-05-12 14:53