C++ 为什么从文件中读取浮点数会得到四舍五入的输出?
我有一个文件和两个输入,如下所示: 34.800287000 0.077352000 我正在读取一个文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这两个变量都定义为double。然而 当我检查变量时,我看到: 34.8003 0.077352 编辑:我正在使用cout检查变量 为什么呢C++ 为什么从文件中读取浮点数会得到四舍五入的输出?,c++,C++,我有一个文件和两个输入,如下所示: 34.800287000 0.077352000 我正在读取一个文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这两个变量都定义为double。然而 当我检查变量时,我看到: 34.8003 0.077352 编辑:我正在使用cout检查变量 为什么呢 谢谢。标准IO streams类对其精度有限制,可以在运行时进行自定义。默认情况下,我认为它是六个位置,这与您获得的以上输出相匹配。如果要提高精度,可以使用setprecis
谢谢。标准IO streams类对其精度有限制,可以在运行时进行自定义。默认情况下,我认为它是六个位置,这与您获得的以上输出相匹配。如果要提高精度,可以使用
setprecision
流操纵器:
double myValue = /* ... */
cout << setprecision(12) << myValue << endl; // Print with higher precision
double myValue=/**/
cout标准IO streams类对其精度有限制,可以在运行时进行自定义。默认情况下,我认为它是六个位置,这与您获得的以上输出相匹配。如果要提高精度,可以使用setprecision
流操纵器:
double myValue = /* ... */
cout << setprecision(12) << myValue << endl; // Print with higher precision
double myValue=/**/
cout使用cout打印时,您的数字将四舍五入。如果您想看到更多的小数,请使用标题std::setprecision
中的iomanip
:使用cout打印时,您的数字将四舍五入。如果您想看到更多的小数,请使用标题中的std::setprecision
iomanip
:如何检查变量?Cout将在输出前自动四舍五入请记住,double
不能包含34.800287000
。double
使用固定的二进制表示法(通常为64位),而不是可变长度的十进制表示法std::ifstream
对十进制进行了近似转换,std::cout
将给出十进制近似值;这两种方法通常都不精确。如何检查变量?Cout将在输出前自动四舍五入请记住,double
不能包含34.800287000
。double
使用固定的二进制表示法(通常为64位),而不是可变长度的十进制表示法std::ifstream
对十进制进行了近似转换,std::cout
将给出十进制近似值;这两种方法通常都不精确。有没有一种方法可以使setprecision()不仅用于您提到的一个变量,而且用于我程序的每个变量。这会满足我的要求:我相信您会发现,如果您在输出流上设置精度(cout)它将在流的生命周期中保持这种状态,直到设置为其他状态。有没有一种方法可以让setprecision()不仅用于您提到的一个变量,而且用于我程序中的每个变量。这将满足我的要求:我相信您会发现,如果您在输出流(cout)上设置精度,它将在流的生命周期内或在设置为其他变量之前保持该精度。实验