So when running the below snipet
import numpy as np
X = np.array([-0.20000008], dtype=np.float32)
np.floor((X + 1) / 0.04)
array([20.], dtype=float32)
The output is obviously wrong as the result should be below 20 and should floor to 19
I get that this is precision errors but running all below samples produce correct results although it should have similar precision
X = np.array([-0.20000008], dtype=np.float32).item()
np.floor((X + 1) / 0.04) # 19.0
X = np.float32(-0.20000008)
np.floor((X + 1) / 0.04) # 19.0
X = np.array([-0.20000008], dtype=np.float32)
np.floor(X / 0.04 + 1 / 0.04) # array([19.], dtype=float32)
np.floor(np.multiply((X + 1), 1/0.04)) # array([19.], dtype=float32)
If I cast it as float64 it works too but it is very expensive cast for my application. Any solutions while sticking to float32?