Why does numeric_limits::min return a negative value for int, but positive values for e.g. float and double?
#include
#inclu
By definition, for floating types, min
returns the smallest positive value the type can encode, not the lowest.
If you want the lowest value, use numeric_limits::lowest
instead.
Documentation: http://en.cppreference.com/w/cpp/types/numeric_limits/min
As for why it is this way, I can only speculate that the Standard committee needed to have a way to represent all forms of extreme values for all different native types. In the case of integral types, there's only two types of extreme: max positive and max negative. For floats there is another: smallest possible.
If you think the semantics are a bit muddled, I agree. The semantics of the related #define
s in the C standard are muddled in much the same way.
It's unfortunate, but behind similar names completely different meaning lies. It was kinda carried over from C, where DBL_MIN and INT_MIN has the very same "problem".
As not much can be done, just remember what means what.