如何从C 中的字符串中获取所有小数号
how to get all decimal number from string in 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;
}
thefile.txt:
34.123456789 77.987654321
当我运行上述代码时,
a = 34.1235
b = 77.9877
,但我想要
a = 34.123456789
b = 77.987654321
我该怎么办?
编辑:我不想打印出A和b。我只希望他们得到确切的值。net
你不能。
float
只能给您六个(ISH(十进制重要数字。从字符串转换后,文件中的值无法保存在float
中。
首先,您需要切换到double
,否则您甚至都不会具有具有完整数值的变量。
然后,要输出,请小心指定所需的精度。
请注意,根据您对这些数据的做法,请考虑浮动点的漏洞,并考虑坚持使用字符串。
我在您的代码中看到了两个主要内容。
- float 精确不足以适合您的数据,您需要 double 数据类型。
- 您需要设置适当的代表精度才能获得所需的输出。
此代码将为您工作。
#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());
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- C++将浮点指针值舍入为小数位数
- 从给定的 I 和 D 序列中形成最小数
- 从C字符串中获取奇怪的字符串长度
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么我的for循环不能正确获取argv
- 如何从C 中的字符串中获取所有小数号
- 获取数字小数部分的最佳方法
- 获取存储为字符串的数字的小数部分
- 如何从 9 和 90 中提取 2.9 和 2.09,即获取数字等于最大编号的小数部分.二分位数之后的数字
- C++ 如何获取兰登数以及如何保存带有 ONY 两位小数的双精度
- 如果我使用整数变量,如何在C++中获取小数
- Borland C++,获取小数的问题