
On 1 May 2010 16:36, Gökhan Sever gokhansever@gmail.com wrote:
Hello,
Is "b" an expected value? I am suspecting another floating point arithmetic issue.
I[1]: a = np.arange(1.6, 1.8, 0.1, dtype='float32')
I[2]: a O[2]: array([ 1.60000002, 1.70000005], dtype=float32)
I[3]: b = np.arange(1.7, 1.8, 0.1, dtype='float32')
I[4]: b O[4]: array([ 1.70000005, 1.79999995], dtype=float32)
A bit conflicting with the np.arange docstring:
" Values are generated within the half-open interval ``[start, stop)`` (in other words, the interval including `start` but excluding `stop`). "
This is a floating-point issue; since 1.79999995 does not actually equal 1.8, it is included. This arises because 0.1, 1.7, and 1.8 cannot be exactly represented in floating-point.
A good rule to avoid being annoyed by this is: only use arange for integers. Use linspace if you want floating-point.
Anne
Thanks.
-- Gökhan
NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion