将字符串转换为双精度 - 精度丢失
Convert String to Double - precision lost
我正在从包含文本和数字的文件读取字符串数组。当我将字符串转换为双精度进行计算时,我失去了精度。我返回的值应该等于 284262.5862225,但总的来说,我只得到一个值 284262。小数点后的数字似乎没有返回。我的代码如下。
ifstream inFile("test.txt");
string line;
int row, col;
double value;
string head[6][2]={};
row=0;
if (!inFile.is_open())
{
cout << "Error opening xyz file. . .";
}
else
{
while(row<6)
{
getline(inFile, line);
stringstream ss (line);
col=0;
while (ss>>head[row][col])
{
col++;
}
row++;
}
inFile.close();
}
stringstream convert (head[2][1]);
convert>>value;
return value;
文件示例:
nrows 270
NCOLS 730
XL 284262.586255
YLL 792350
它对我来说很好用。问题可能是您正在使用cout打印值,并且它仅打印前6个有效数字(这是点之前的部分)。如果包含库
#include <iomanip>
并且您提高输出的精度,它应该可以工作。
cout << setprecision (13) << value << endl;
相关文章:
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 正在将csv文件读取为双精度矢量
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 检查是否以特定精度给出双精度
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- C 字符串返回字符串的整数/双精度/长整型值
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- 如何使双精度值的 C++ 和 C# 中的结果相同
- 使用浮点数和双精度数的非常小数字的数学
- 使用 Xcode 将双精度存储在数组C++中
- 在 C++ 中将双精度变量写入二进制文件
- 如何从字符串转换为双精度*
- 为什么我的数组双精度函数不起作用?
- 高精度双精度的 Sprintf 格式化问题
- C++ cout 将双精度对齐到精度 2 并正确对齐
- 无法获得固定的设置精度双精度以显示小数位
- 为什么我无法从 std::stringstream 二进制流中获得全精度(双精度、浮点数)
- 将精度双精度转换为字符串