我需要从文件中读取浮点值。
我如何执行此操作的基本示例代码:
int main()
{
float number;
ifstream inputFile;
inputFile.open("testfile.dat");
inputFile >> number;
cout << number << endl;
return 0;
}
文件中的第一行是:13212.13131 但当我输入“数字”时,显示的数字是:13212.1 问题是小数被删除的一部分,在其他情况下,所有这些都被删除。为什么会发生这种情况,我该如何解决这个问题?
从文件中读取数字的要点是用它进行数学计算。
答案 0 :(得分:3)
首先,浮点输出默认为6位十进制数。您需要std::setprecision()
才能打印更多数字。但是你会达到浮动类型的极限。
在大多数系统中,float为IEEE-754 single precision,因此它只能存储大约7位有效数字。最近的13212.13131是1.3212130859375E4。如果您需要更高的精度,则必须使用double,它在大多数系统上具有大约15-16位的精度。
答案 1 :(得分:1)
尝试使用std::setprecision()
:
cout << setprecision(14) << number << endl;
你需要
#include <iomanip>
如果没有解决问题,您应该尝试对其进行调试并查看实际数字(13212.13131
或13212.1
)。