为什么 std::numeric_limits<float>::min() 在流式传输到具有不同功能的输出时行为不同?
why does std::numeric_limits<float>::min() differ in behavior when streamed to output with different functions?
我在
中遇到了一个奇怪的行为
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()
) 时,我得到 true
(这是直观且合乎逻辑的)
那么,有人可以向我解释一下输出中的这种差异吗?
cppreference for numeric_limits:
std::numeric_limits<float>::min()
returnsFLT_MIN
。
使用%f
显示的返回值(实际上不是0
)实际上是格式化为固定小数位数。 '%f'
格式以固定格式打印 6 位小数。
您可以使用:
%e=gives the scientific notation
%g=handles large floating numbers
我在
中遇到了一个奇怪的行为 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()
) 时,我得到 true
(这是直观且合乎逻辑的)
那么,有人可以向我解释一下输出中的这种差异吗?
cppreference for numeric_limits:
std::numeric_limits<float>::min()
returnsFLT_MIN
。
使用%f
显示的返回值(实际上不是0
)实际上是格式化为固定小数位数。 '%f'
格式以固定格式打印 6 位小数。
您可以使用:
%e=gives the scientific notation
%g=handles large floating numbers