Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在同时使用cout和printf时不应舍入_C++_Io - Fatal编程技术网

C++ C++;在同时使用cout和printf时不应舍入

C++ C++;在同时使用cout和printf时不应舍入,c++,io,C++,Io,我需要做一个计算cos(x)的程序,我的问题是,当我使用printf例如cos(0.2)是0.98,但它是0.984,它不是四舍五入到2个数字 我的代码: #include <iostream> #include <math.h> using namespace std; int main() { float x = 0.2; cout << "x=" << x << " cos(y)

我需要做一个计算cos(x)的程序,我的问题是,当我使用
printf
例如cos(0.2)是0.98,但它是0.984,它不是四舍五入到2个数字

我的代码:

#include <iostream> 
#include <math.h>

using namespace std;

int main()
{
    float x = 0.2;
    cout << "x=" << x << " cos(y) y=" << printf("%.2f", cos(x)) << "\n";
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
浮动x=0.2;

cout正如其他人在评论中所说,混合
std::cout
printf
并不能满足您的需要。请使用流操纵器
std::fixed
std::setprecision

#包括//std::fixed和std::precision所需
#包括
包含/ /通知校正的包含,这是C++版本
使用名称空间std;
int main()
{
float x=0.2f;//使用float初始化,而不是从double默默地转换为float。

cout问题不在于数字的舍入,而在于输出

您可以同时使用
cout
printf
,但不应将
printf
的返回值与它作为副作用创建的输出混淆:


另请参见:

我不确定
printf
的返回值是否要放在流中。printf返回一个整数,其中包含它写入的内容的数量,但如果同时使用printf和cout,则会打乱您的打印,除非您确定缓冲区已同步。如果确实要在流中设置前置,请可以使用以下操作:
printf(“x=%f cos(y)y=%2f\n”,x,cos(x));
或者这样做:
cout(请注意,从数学上讲,只输出
cos(x)=0.98
,而不是
cos(y)y=0.98
cout << "x=" << x << " cos(y) y=" << printf("%.2f", cos(x)) << "\n";
cout << "x=" << x << " cos(y) y=";
printf("%.2f\n", cos(x));