繁体   English   中英

从文件中读取双倍

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM