¿Por qué el pecado (180) no es cero cuando se usa python y numpy?

¿Alguien sabe por qué lo de abajo no es igual a 0?

import numpy as np
np.sin(np.radians(180))

o:

np.sin(np.pi)

Cuando entro en python me da 1.22e-16.