我有一个文件,下面显示了两个输入:
34.800287000 0.077352000
我正在读取一个文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这些变量都定义为double.但是,当我检查我的变量时,我看到:
34.8003 0.077352
编辑:我正在使用cout来检查我的变量.
这是为什么 ?
谢谢.
标准IO流类的精度有限,可以在运行时自定义.默认情况下,我相信这是六个位置,它与您获得的输出相匹配.如果要增加精度,可以使用setprecision流操纵器:
double myValue = /* ... */
cout << setprecision(12) << myValue << endl; // Print with higher precision
Run Code Online (Sandbox Code Playgroud)
该setprecision机械手在定义<iomanip>和使用一次的时候会改变的行为,cout以更高的精度打印的程序,而你的情况可能是有帮助的其余部分.试试这个,看看你的数字是否真的失去精确度.