如何从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());