Seguendo il suggerimento di
migliorabile, potresti usare un
if come questo per vedere se il valore è approssimativamente "zero":
if(std::fabs(x) <= std::numeric_limits<float>::epsilon())
//approssima con zero
La chiamata
std::numeric_limits<float>::epsilon() in questo caso rappresenta l'epsilon macchina visto come la differenza tra
1 e il minimo valore maggiore di
1 che è rappresentabile.
Dai uno sguardo anche qua :
http://www.cplusplus.com/reference/limits/numeric_limits/
Per il tuo caso in particolare la soluzione dovrebbe andare, non sono sicuro che la cosa continui a funzionare se lo step diventa molto più piccolo di
0.01 e/o il range diventa più grande di
[-10,10].