我正在尝试从文件中获取浮点值以在我的程序中使用它们。我使用以下论坛来构建程序逐行读取文件 https://stackoverflow.com/questions/7868936/c-read-file-line-by-line.
但这样做获得的值似乎在最后被截断了。
My code
#include <iostream>
#include <cstring>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
ifstream file;
file.open("test_file.ssv");
string line;
while(file.good() && (getline(file, line)))
{
istringstream iss(line);
double a, b, c;
iss >> a >> b >>c ;
cout << a <<endl;
}
file.close();
return (0);
}
我得到的输出是
9292.31
32432.2
虽然我的文件有以下数据
9292.3123 4234.66 342.25423
32432.2423 3423.656 341.67841
有什么建议可以改进这一点吗?
您的标准流可能具有较低的浮点精度,因此在输出时您只能看到几个小数float
with std::cout
. Use std::ios_base::precision
提高精度并考虑使用std:: ios::floatfield
输出固定或科学精度,例如:
// modify precision
#include <iostream> // std::cout, std::ios
int main () {
double f = 3.14159;
std::cout.unsetf ( std::ios::floatfield ); // floatfield not set
std::cout.precision(5);
std::cout << f << '\n';
std::cout.precision(10);
std::cout << f << '\n';
std::cout.setf( std::ios::fixed, std:: ios::floatfield ); // floatfield set to fixed
std::cout << f << '\n';
return 0;
}
Outputs:
3.1416
3.14159
3.1415900000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)