1
ストリーム入力演算子をオーバーロードすることでC++で列ファイルを読み込もうとしています。 これは、ファイル内の各行を読み込むための主な機能です:演算子でC++文字列変換をdoubleにする>>
#include <fstream>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
typedef vector <double> record_t;
istream& operator >> (istream& ins, record_t& record)
{
record.clear();
string line;
getline(ins, line);
stringstream ss(line);
double f;
while (ss >> f)
record.push_back(f);
return ins;
}
、ほとんどの場合、かなりうまく動作します。
しかし55000.0
代わりの55000.003520
が、私はそれがすべての桁で正しい値を読むことができますどのような方法があるので、最初のフィールドが格納されている?
55000.003520 -0.009740 0.000721 -0.024600 0.000000
このライン用
ご協力いただきありがとうございます。数が実際に読んで、正しく保存されている
:問題への答えをアーカイブに
55000.000000のみが保存されていることを確認していますか?これは実際の値を出力するために使用するもののように見えるので、単に6桁の有効数字に丸められます。 –
私の誤りは、 'cout << setprecision(15)<< t [0];で出力値を出力すると' 55000.00352'となります。ヒントをありがとう! – joaoFaria
'std :: fixed'を使うこともできます – DimChtz