在打印相同的变量时为 cout 和 printf 获取不同的输出

Getting different output for cout and printf while printing same variable

本文关键字:printf 获取 输出 cout 打印 变量      更新时间:2023-10-16

Using Devc++对于 printf 获得 0.00000对于cout来说,得到一些奇怪的输出。

#include<iostream>
#include<cmath>
#include<stdio.h>
using namespace std;
main()
{
   float i,j=M_PI;
   i=sin(j);
   printf("%f n",i);
   cout<<i;
}
在我看来

M_PI并不完全是圆周率(我们知道它不可能),而且sin的结果也不完全为零。

printf with %f 表示四舍五入为"正常"小数的输出数字,而cout使用自适应格式(我记得在 printf 中大致%g),该格式使用科学记数法来表示小数字。

另请注意,%f的意思是double但 varargs 有助于在传入时将您的float提升为双倍。

如前所述,您将获得不同的输出值,因为cout使用科学记数法,而printf默认为小数点后 6 位。如果通过使用

printf("%.013f n",i);

您将获得相同的值。

现在不是所有的十进制数都可以用浮点表示来表示,这就是为什么你没有得到你期望的结果。

还有一个关于如何在不同平台上实现 sin 的问题,然后您可以看到为什么 PI 的正弦可能不是 0。