shiyideliutang 发表于 2018-7-31 16:27:12

检测输出各种类型的最值

今天在测试编译器各种类型的最值时,首先显示的数值大小以科学计数法输出。
/***************************************************************************
*文件名称:各个类型的最大最小值
*文件标识:无
*功能实现:检测输出各种类型的最值。
*当前版本:VC++6.0
*作    者:The Count of Monte Cristo
*完成日期:2018年7月27日
**************************************************************************/
#include <iostream>
#include <climits>
#include <cfloat>
using namespace std;

int main()
{
    cout << "int 最大值:" << INT_MAX << "\n";
    cout << "int 最小值:" << INT_MIN << "\n";
//        cout.setf(ios_base::fixed, ios_base::floatfield);
    cout << "float 最大值:" << FLT_MAX << "\n";
    cout << "float 最小值:" << FLT_MIN << "\n";
    cout << "double 最大值:" << DBL_MAX << "\n";
    cout << "double 最小值:" << DBL_MIN << "\n";
    cout << "long 最大值:" << LONG_MAX << "\n";
    cout << "long 最小值:" << LONG_MIN << "\n";
        return 0;
}
结果显示正确,但是我想以正常计数方式输出时,即在源程序加上cout.setf(ios_base::fixed, ios_base::floatfield);但是此时输出的结果很意外了。

无符号整形 发表于 2018-7-31 17:11:13

可能是因为double不能以ios_base::floatfield输出吧。

shiyideliutang 发表于 2018-7-31 17:31:12

无符号整形 发表于 2018-7-31 17:11
可能是因为double不能以ios_base::floatfield输出吧。

嗯呐,这一点我也考虑了,亲,但是float型的最小值也错了呀。

无符号整形 发表于 2018-7-31 17:35:59

shiyideliutang 发表于 2018-7-31 17:31
嗯呐,这一点我也考虑了,亲,但是float型的最小值也错了呀。

stackoverflow上很多人说为什么我的FLT_MIN打印出来是0,那是是因为打印是没有注意精度的原因。如果输出%.100f,那就可以看到比较准确的值了。
页: [1]
查看完整版本: 检测输出各种类型的最值