在打印相同的变量时为 cout 和 printf 获取不同的输出
Getting different output for cout and printf while printing same variable
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。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 在打印相同的变量时为 cout 和 printf 获取不同的输出
- 如何将 printf 的功能获取到 MFC 中的编辑控件
- C++ 如何使用 printf 获取"one digit exponent"
- 如何在arm可执行文件中获取printf函数的地址