对于类型T
为此std::is_floating_point<T>::value
is true
,C++ 标准是否指定了任何方式T
应该实施吗?
例如,是否T
甚至必须遵循符号/尾数/指数表示?或者它可以完全任意吗?
来自 N3337:
[basic.fundamental/8]:
浮点类型共有三种:float、double 和 long double。 double 类型至少提供
与 float 一样高的精度,并且 long double 类型提供的精度至少与 double 一样高。
float 类型的值集合是 double 类型的值集合的子集;值的集合
double 类型的值是 long double 类型的值集的子集。的值表示
浮点类型是实现定义的。整型和浮点型统称为算术
类型。标准模板 std::numeric_limits (18.3) 的特化应指定最大值
以及实现的每种算术类型的最小值。
如果您想检查您的实现是否使用 IEEE-754,您可以使用std::numeric_limits::is_iec559 http://en.cppreference.com/w/cpp/types/numeric_limits/is_iec559:
static_assert(std::numeric_limits<double>::is_iec559,
"This code requires IEEE-754 doubles");
该领域还有许多其他辅助特征,例如has_infinity http://en.cppreference.com/w/cpp/types/numeric_limits/has_infinity, quiet_NaN http://en.cppreference.com/w/cpp/types/numeric_limits/quiet_NaN and more http://en.cppreference.com/w/cpp/types/numeric_limits.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)