为什么 std::numeric_limits::min() 在使用不同函数流式传输到输出时行为不同?

2024-06-19

我有一个奇怪的行为

 std::numeric_limits<float>::min()

当我调用 std::cout 时,我得到的输出值为 1.17549e-38

相反,当我使用

printf("%f", std::numeric_limits<float>::min());

我得到的值为 0.000000。

请注意,当我评估(std::numeric_limits<float>::min() == std::numeric_limits<float>::min()) I get true(这是直观和逻辑的)

那么,有人可以向我解释一下输出的这种差异吗?


numeric_limits 的 cppreference http://en.cppreference.com/w/cpp/types/numeric_limits:

std::numeric_limits<float>::min()回报FLT_MIN.

返回值(不是0实际上)使用显示%f实际上被格式化为固定的小数位数。这'%f'format 以固定格式打印 6 位小数。

您可以使用 :

%e=gives the scientific notation
%g=handles large floating numbers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 std::numeric_limits::min() 在使用不同函数流式传输到输出时行为不同? 的相关文章

随机推荐