[英]Reading double from file
对于我的作业,我应该从文件中读取双值并对它们进行排序。 这些是一些价值观。 但是当我用我的代码读取它们时,当打印它进行测试时,它们是以整数形式写的。
std::ifstream infile (in_File);
double a;
while(infile>>a)
{
std::cout<<a<<std::endl;
}
我的双打是从185261.886524
然后237358.956723
开始的
我的代码打印185262
然后237359
然后等等。
尝试在main()
的顶部添加:
setlocale(LC_ALL, "C");
这将为您的程序提供“C”语言环境而不是本地语言环境。 我想你的本地人使用“,”作为小数点而不是“。” 和你的数据一样。
您还需要在文件顶部添加#include <clocale>
。
编辑:然后,为了获得更高的精度,您可以执行#include <iomanip>
并在程序的顶部执行此操作:
std::cout << std::setprecision(20);
setprecision
更改打印的总位数。
你的问题不是输入,而是输出: cout
默认打印一个double
6位数字,这就是为什么你看到圆形值185262
,而不是185261
就像你对错误输入所期望的那样。 使用std::setprecision
来提高输出精度。
如果您的系统上的本地化设置具有不同的小数分隔符,则会发生这种情况.
。 尝试添加以下内容:
#include <locale>
然后使用imbue
方法:
std::ifstream infile (in_File);
infile.imbue(std::locale("C"));
double a;
while(infile>>a)
{
std::cout<<a<<std::endl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.