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