当我将它们传递给cout时,为什么我的双打显示为整数?

时间:2011-04-08 08:51:28

标签: c++

我有一组存储在文件中的坐标。我只提取了某些点的“x”坐标并存储在一个名为:

的向量中
vector<double> x_points;

然后,我需要获取该向量内的最小和最大x坐标值。所以我使用*max_element*min_element来加入<algorithm>;

double max_in=*max_element(x_points.begin(),x_points.end());
double min_in=*min_element(x_points.begin(),x_points.end()); 

然后,当我打印值时,使用

cout<<" min-max-In "<<min_in<<" "<<max_in<<" ";

...它只显示整数部分。我需要小数部分的整个值。那么,我怎样才能获得真正的价值,因为我需要那些用这些值做另一个过程? 谢谢。请帮忙。

2 个答案:

答案 0 :(得分:5)

使用默认精度(6位数)打印值。正是你得到的!

尝试添加cout.precision(10);以获取更多数字。

答案 1 :(得分:1)

你为什么不使用std::set而不是矢量?然后他们自然会被订购。这说它会破坏原始订单和任何重复(除非你使用std::multiset),如果这对你很重要。

或者,您可以在读入时计算出最大/最小值,如下例所示。我对它进行了一些breif分析,并且确实没有增加任何可观的处理时间。

vector<double> xcoords;
double d, dMax, dMin;
bool firstLine(true);

ifstream inFile( argv[1] );
while ( inFile.good() )
{
    inFile >> d;
    if ( ! inFile.good() || inFile.eof() ) break;
    xcoords.push_back(d);

    if (firstLine)
    {
        dMax = d;
        dMin = d;
        firstLine = false;
    }
    else
    {
        dMax = max( dMax, d );
        dMin = min( dMin, d );
    }
}

cout << dMax << " " << dMin << " " << xcoords.size()  << endl;