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?
IEEE 754 standard
Single-precision floating-point format (https://en.wikipedia.org/wiki/Single-precision_floating-point_format)
Well, so I met the smallest positive subnormal number, or may be the minimal rounded position for it.