I tested my system to see which smallest number could be non-zero.
My result is this:
float x = 8.0e-46f; // != 0.0f.
float y = 7.0e-46f; // == 0.0f.
but I see in float.h that:
#define FLT_MIN 1.175494351e-38F
So, why this difference?
May be that FLT_MIN is system-dependent?