为什么从文件中读取浮点数会产生舍入输出?

ber*_*kay 1 c++

我有一个文件,下面显示了两个输入:

34.800287000 0.077352000

我正在读取一个文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这些变量都定义为double.但是,当我检查我的变量时,我看到:

34.8003 0.077352

编辑:我正在使用cout来检查我的变量.

这是为什么 ?

谢谢.

tem*_*def 5

标准IO流类的精度有限,可以在运行时自定义.默认情况下,我相信这是六个位置,它与您获得的输出相匹配.如果要增加精度,可以使用setprecision流操纵器:

double myValue = /* ... */
cout << setprecision(12) << myValue << endl; // Print with higher precision
Run Code Online (Sandbox Code Playgroud)

setprecision机械手在定义<iomanip>和使用一次的时候会改变的行为,cout以更高的精度打印的程序,而你的情况可能是有帮助的其余部分.试试这个,看看你的数字是否真的失去精确度.