我有一个文件,下面显示了两个输入:
34.800287000 0.077352000
我正在读取文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这些变量都定义为 double 。然而 当我检查我的变量时,我看到了:
34.8003 0.077352
编辑:我正在使用cout检查我的变量。
为什么会这样?
感谢。
答案 0 :(得分:5)
标准IO流类的精度有限,可以在运行时自定义。默认情况下,我相信这是六个位置,它与您获得的输出相匹配。如果要提高精度,可以使用setprecision
流操纵器:
double myValue = /* ... */
cout << setprecision(12) << myValue << endl; // Print with higher precision
setprecision
操纵器在<iomanip>
中定义,一旦使用,将更改cout
的行为,以便在程序的其余部分以更高的精度打印,在您的情况下可能是很有帮助。试试这个,看看你的数字是否真的失去精确度。
答案 1 :(得分:2)
使用cout打印时,您的数字将会四舍五入。如果您想查看更多小数,请使用标题std::setprecision
中的iomanip
:http://www.cplusplus.com/reference/iostream/manipulators/setprecision/