我有一个奇怪的行为
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
(这是直观且合乎逻辑的)
那么,任何人都可以向我解释输出的这种差异吗?
答案 0 :(得分:4)
cppreference for numeric_limits:
std::numeric_limits<float>::min()
返回FLT_MIN
。
使用0
显示的返回值(实际上不是%f
)实际上已格式化为固定的小数位数。 '%f'
格式以固定格式打印6个小数位。
您可以使用:
%e=gives the scientific notation
%g=handles large floating numbers