1 c++ long-double numeric-limits
使用 Visual Studio Community 2019 v16.4.2 和它在 64 位 Win10 上附带的最新内容。
在测试各种数据类型限制时遇到了一个奇怪的错误,numeric_limits 无法区分 double 和 long double 最小/最大值。使用带有默认 GNU Mac 工具链的 NetBeans 显示更合理的结果。
// Type limits: float
std::cout
<< "MIN float " << numeric_limits<float>::min() << "\n"
<< "MAX float " << numeric_limits<float>::max() << "\n"
<< "MIN double " << numeric_limits<double>::min() << "\n"
<< "MAX double " << numeric_limits<double>::max() << "\n"
<< "MIN long double " << numeric_limits<long double>::min() << "\n"
<< "MAX long double " << numeric_limits<long double>::max() << "\n";
Run Code Online (Sandbox Code Playgroud)
控制台输出
Run Code Online (Sandbox Code Playgroud)MIN float 1.17549e-38 MAX float 3.40282e+38 MIN double 2.22507e-308 MAX double 1.79769e+308 MIN long double 2.22507e-308 // NetBeans on Mac 3.3621e-4932 MAX long double 1.79769e+308 // NetBeans on Mac 1.18973e+4932
C++ 标准只要求long double至少具有 的精度double,因此您的程序输出没有任何问题。
引用标准(第 3.9.1 节,点亮 8):
共有三种浮点类型:float、double 和 long double。double 类型提供的精度至少与 float 一样,long double类型提供的精度至少与 double 一样。 float 类型的值集是double 类型的值集的子集;double 类型的值集是 long double 类型的值集的子集。浮点类型的值表示是实现定义的。整型和浮点型统称为算术类型。标准模板 std::numeric_limits (18.3) 的特化应指定实现的每个算术类型的最大值和最小值。
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |