gpt4 book ai didi

c++ - max_digits10 在引用浮点类型时为 0 有什么好处?

转载 作者:太空狗 更新时间:2023-10-29 21:32:29 27 4
gpt4 key购买 nike

在C++11中,std::numeric_limits<Type>::max_digits10的优势是什么?为 Type 返回 0那是对 float 的引用?

例如:

constexpr int precisionPositive(const float &floatVal)
{
using numericType = std::remove_reference<decltype(floatVal)>::type;
constexpr int digits = std::numeric_limits<numericType>::max_digits10;

return digits;
}

constexpr int precisionZero(const float &floatVal)
{
using numericType = decltype(floatVal);
constexpr int digits = std::numeric_limits<numericType>::max_digits10;

return digits;
}

precisionPositive返回 9 和 precisionZero返回 0。

在什么情况下零值会有帮助,而不是给出编译时错误?

最佳答案

根据 C++ 标准 (n4659),在 numeric_limits 类模板中,max_digits10 的默认值为 0

21.3.4 Class template numeric_limits [numeric.limits]

namespace std {
template<class T> class numeric_limits {
public:
...
static constexpr int max_digits10 = 0;

只有当模板专门用于floatdouble等时,max_digits10才会被赋予一个特定的值。

考虑float 的特化。

21.3.4.2 numeric_limits specializations [numeric.special]

namespace std {
template<> class numeric_limits<float> {
public:
...
static constexpr int max_digits10 = 9;

实现也遵循这一点。请参阅 GCC 的标准 C++ 库 header limits例如。

因此,除了 max_digits10 被赋予特定值的特殊情况外,默认值为 0 并且因此 max_digits10 的值> 对于浮点类型的引用也是 0

关于c++ - max_digits10 在引用浮点类型时为 0 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55034693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com