减去双向量 returns 扩展符号

subtracting double vector returns expanded notation

当我尝试减去最高值时,我的 C++ 代码 returning 扩展符号。

    vector<std::string> smarkdat
    vector<std::string> markdat;
    vector<double> doubleMdat;
    vector<double> sdoubleMdat;
    markdat = getmarketbuyData();
    smarkdat = getmarketsellData();
    transform(smarkdat.begin(), smarkdat.end(), back_inserter(sdoubleMdat), [](string const& val) {return stod(val);});
    auto sbiggestMark = std::max_element(std::begin(sdoubleMdat), std::end(sdoubleMdat));
    transform(markdat.begin(), markdat.end(), back_inserter(doubleMdat), [](string const& val) {return stod(val);});
    auto biggestMark = std::max_element(std::begin(doubleMdat), std::end(doubleMdat));
    std::cout << "The highest seller is " << *sbiggestMark << " at position " << std::distance(std::begin(sdoubleMdat), sbiggestMark) << std::endl;
    std::vector<double> difference(sdoubleMdat.size(), 0.0);

    for ( std::vector<double>::size_type i = 0; i < sdoubleMdat.size(); i++ )
        {
             difference[i] = std::abs( sbiggestMark[i] - biggestMark[i] );
             cout << difference[i] << endl;
        }

输出:

8.636e-05

矢量数据是字符串 0.000000200 转换为双精度。

我如何return 2 倍的常规减去值而不是非常明显的不正确 return 值?

如果问题是您想要设置不带科学记数法的输出,则使用 std::setprecisionstd::fixed<iomanip>:

中找到
#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    double x = fabs(sqrt(2.0) - sqrt(2.0001));
    cout << x << "\n"; 
    cout << setprecision(10) << fixed << x << '\n';
}

实例:http://ideone.com/B3IfDF