【问题标题】:Platform-independent way to obtain maximum C++ float value获取最大 C++ 浮点值的平台无关方式
【发布时间】:2009-09-27 19:18:32
【问题描述】:

在 C++ 中获得可存储在 float 中的最大值的最佳、独立于平台的方法是什么?

【问题讨论】:

    标签: c++ floating-point


    【解决方案1】:

    【讨论】:

      【解决方案2】:
      std::numeric_limits<float>::max()
      

      【讨论】:

        【解决方案3】:

        std::numeric_limits

        // numeric_limits example
        #include <iostream>
        #include <limits>
        using namespace std;
        
        int main () {
        
          cout << "Minimum value for float: " << numeric_limits<float>::min() << endl;
          cout << "Maximum value for float: " << numeric_limits<float>::max() << endl;
          cout << "Minimum value for double: " << numeric_limits<double>::min() << endl;
          cout << "Maximum value for double: " << numeric_limits<double>::max() << endl;
          return 0;
        }
        

        【讨论】:

        • 需要注意的是,对浮点类型的 min() 调用返回的是最小正值,而不是最小值。有很大的不同。
        【解决方案4】:

        在 C++ 中,您可以使用 std::numeric_limits 类来获取此类信息。

        如果has_infinity 是true(现在基本上所有平台都是如此),那么您可以使用infinitity 来获取大于或等于所有其他值(NaN 除外)的值。类似地,它的否定将给出负无穷大,并且小于或等于所有其他值(再次除了 NaN)。

        如果您想要有限值,则可以使用min/max(将小于或等于/大于或等于所有其他有限值)。

        【讨论】:

          【解决方案5】:
          #include <float.h>
          

          然后使用 FLT_MAX

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-14
          相关资源
          最近更新 更多