Question: In short, the problem I encounter is this:

```
aa = np.arange(-1., 0.001, 0.01)
aa[-1]
Out[16]: 8.8817841970012523e-16

```

In reality, this cause a series problem since my simulations doesn't allow positive value inputs.

I can sort of get around by doing:

```
aa = np.arange(-100, 1, 1)/100.
aa[-1]
Out[21]: 0.0

```

But this is a pain. Practically you can't do this every time. 

This seems like such a basic problem. There's gotta be something I am missing here.
By the way, I am using Python 2.7.13.

Answer: 
Using np.linespace solved it for me:

For example `np.linspace(0.5, 0.9, 5)` produce [0.5 0.6 0.7 0.8 0.9].
We don't get to forget about the limitations of floating-point arithmetics. Repeatedly adding 0.01, or rather the double-precision float that is close to 0.01, will result in the kind of effects you observe. 

To ensure that an array does not contain positive numbers, use [`numpy.clip`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html):

```
aa = np.clip(np.arange(-1., 0.001, 0.01), None, 0)

```