why does std::numeric_limits<float>::min() differ in behavior when streamed to output with different functions?

386 views Asked by At

I got a weird behaviour with

 std::numeric_limits<float>::min()

when I call std::cout I get an output value of 1.17549e-38

in contrast when I use

printf("%f", std::numeric_limits<float>::min());

I get a value of 0.000000.

note that when I evaluate (std::numeric_limits<float>::min() == std::numeric_limits<float>::min()) I get true (which is intuitive and logical)

so, can any one explain to me this difference in output?

1

There are 1 answers

2
Saurav Sahu On BEST ANSWER

cppreference for numeric_limits:

std::numeric_limits<float>::min() returns FLT_MIN.

The returned value (which is not 0 in reality) displayed using %f is actually formatted to fixed number of decimal places. The '%f' format prints 6 decimal places in fixed format.

You can use :

%e=gives the scientific notation
%g=handles large floating numbers