如何从c++; 我试图从C++中的文本中获取值(所有十进制数)。但我有个问题,我解决不了 #include "pch.h" #include <iostream> #include <fstream> #include <sstream> #include <string> int main() { std::ifstream infile("C:\\thefile.txt"); float a, b; while (infile >> a >> b) { // process pair (a,b) } std::cout << a << " " << b; }

如何从c++; 我试图从C++中的文本中获取值(所有十进制数)。但我有个问题,我解决不了 #include "pch.h" #include <iostream> #include <fstream> #include <sstream> #include <string> int main() { std::ifstream infile("C:\\thefile.txt"); float a, b; while (infile >> a >> b) { // process pair (a,b) } std::cout << a << " " << b; },c++,string,decimal,C++,String,Decimal,当我运行上面的代码时 a = 34.1235 b = 77.9877 但是我想要 a = 34.123456789 b = 77.987654321 我该怎么办 编辑:我不想打印出a和b。我只想让他们得到准确的值.net你不能 A只能给您六位十进制有效数字。从字符串转换后,文件中的值不能保存在浮点数中 首先,您需要切换到,否则您甚至不会有一个具有完整数值的变量 然后,对于输出,请注意 请注意浮点的弱点,并考虑使用字符串,这取决于你对这些数据的处理。 在代码中我看到两个主要的东西。 浮点精

当我运行上面的代码时

a = 34.1235 
b = 77.9877
但是我想要

a = 34.123456789 
b = 77.987654321
我该怎么办

编辑:我不想打印出a和b。我只想让他们得到准确的值.net

你不能

A只能给您六位十进制有效数字。从字符串转换后,文件中的值不能保存在
浮点数中

首先,您需要切换到,否则您甚至不会有一个具有完整数值的变量

然后,对于输出,请注意


请注意浮点的弱点,并考虑使用字符串,这取决于你对这些数据的处理。

在代码中我看到两个主要的东西。

  • 浮点精度不足以满足所需数据类型的要求
  • 您需要设置适当的输出精度以获得所需的输出
  • 此代码将适用于您

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    
    int main()
    {
        std::ifstream infile("newfile.txt");
        double a, b;
        std::cout.precision(11);
        while (infile >> a >> b)
        {
            // process pair (a,b)
        }
    
        std::cout << a << " " << b;
    }
    
    #包括
    #包括
    #包括
    #包括
    int main()
    {
    std::ifstream infle(“newfile.txt”);
    双a,b;
    标准:计算精度(11);
    而(填充>>a>>b)
    {
    //进程对(a、b)
    }
    
    std::cout您应该将输入读入字符串,然后将其转换为double(取决于计算机上float的足够精度)。您可以直接显示字符串。一个可能的答案是


    你的计算机在a
    浮点运算中是否有足够的精度来实现这一点?你确定吗?@LightnessRacesinOrbit我什么都不确定。我不想打印a和b。我只想a和b得到所有的值。如果他们已经得到了所有的值,如果因为打印而在短时间内出现,没关系。你能告诉我吗?@NathanOliver我接受了你的建议小回答,谢谢bro@NathanOliver还有,我应该使用哪种类型?双精度还是浮点型?对于浮点型a,b;为什么要自己这样做,而IOStreams会为您这样做?在OP编写的代码中?@ShafiqaIqbal我没有得到您所说的一切这在我打印时并没有显示所有值。但我不想显示,我只想让它们得到准确的值。Do如果我使用double,他们会得到准确的值?@baybay尝试一下,看看结果如何?
    
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    
    int main()
    {
        std::ifstream infile("newfile.txt");
        double a, b;
        std::cout.precision(11);
        while (infile >> a >> b)
        {
            // process pair (a,b)
        }
    
        std::cout << a << " " << b;
    }
    
    string word;  
    openfile >> word;
    double lol = atof(word.c_str());