The problem with a /= 10.0
is that it modifies the array in place, and it won't change the the dtype of the array, so all the floats are converted to integers. On the other hand a = a / 10.0
created a new array, and the type can be changed if a new array is being created.
From docs:
Note that assignments may result in changes if assigning higher types
to lower types (like floats to ints) or even exceptions (assigning
complex to floats or ints):