I was looking at std::numeric_limits<float>::min/max()
but it appears 'min()' returns the smallest absolute value, not the lowest value. Is it safe to use
我在看std :: numeric_limits
-std::numeric_limits<float>::max()
, i.e is float symmetric in min/max limits?
-std :: numeric_limits
3 个解决方案
#1
24
IEEE 754 floating point numbers use a sign bit for signed-ness (rather than something like twos complement), so if you're sure that your compiler/platform uses that representation (very common) then you can use -std::numeric_limits<float>::max()
as you suspected.
IEEE 754浮点数使用符号位进行签名(而不是二进制补码),所以如果您确定您的编译器/平台使用该表示(非常常见),那么您可以使用-std :: numeric_limits <你怀疑浮动> :: max()。
#2
21
use std::numeric_limits::lowest()
static _Ty __CRTDECL lowest() _THROW0()
{ // return most negative value
return (-(max)());
}
#3
4
Yes, float
is symmetric in minimum/maximum values.
是的,浮点数的最小值/最大值是对称的。
If you're using the lowest representable value as an initial value in searching a list for its maximum value, consider using infinity instead.
如果您在搜索列表的最大值时使用最低可表示值作为初始值,请考虑使用无穷大。
std::numeric_limits<T>::has_infinity()
will return true
for any numeric type that has it and std::numeric_limits<T>::infinity()
will return a value that always evaluates greater than any other non-NaN value for that type. This value can be negated and will evaluate less than anything else.
对于任何具有它的数值类型,std :: numeric_limits
#1
24
IEEE 754 floating point numbers use a sign bit for signed-ness (rather than something like twos complement), so if you're sure that your compiler/platform uses that representation (very common) then you can use -std::numeric_limits<float>::max()
as you suspected.
IEEE 754浮点数使用符号位进行签名(而不是二进制补码),所以如果您确定您的编译器/平台使用该表示(非常常见),那么您可以使用-std :: numeric_limits <你怀疑浮动> :: max()。
#2
21
use std::numeric_limits::lowest()
static _Ty __CRTDECL lowest() _THROW0()
{ // return most negative value
return (-(max)());
}
#3
4
Yes, float
is symmetric in minimum/maximum values.
是的,浮点数的最小值/最大值是对称的。
If you're using the lowest representable value as an initial value in searching a list for its maximum value, consider using infinity instead.
如果您在搜索列表的最大值时使用最低可表示值作为初始值,请考虑使用无穷大。
std::numeric_limits<T>::has_infinity()
will return true
for any numeric type that has it and std::numeric_limits<T>::infinity()
will return a value that always evaluates greater than any other non-NaN value for that type. This value can be negated and will evaluate less than anything else.
对于任何具有它的数值类型,std :: numeric_limits