BUG: fix wrong output shape in ndimage.zoom()

`ndimage.zoom()` may calculate the output shape incorrectly due to round-off error in some occasions.
For example, an image with the shape of `(11, 25)` cannot be zoomed to `(15, 29)` with `(15.0 / 11, 29.0 / 25)` as the zoom factor. (An `(14, 28)` image will be returned instead)

Rounding to nearest may be a better method for calculating the the output shape compared to truncation.