使用DevC++ 获得0.00000 以及cout获取一些奇怪的输出。为cout和printf获取不同的输出,同时打印相同的变量
#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;
}
使用DevC++ 获得0.00000 以及cout获取一些奇怪的输出。为cout和printf获取不同的输出,同时打印相同的变量
#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
与%f
表示使用科学记数法来表示少数四舍五入为“正常”的小数而cout
使用自适应格式(在printf的大致%g
我记得)输出的数字。
还要注意的是%f
意味着double
而是可变参数有益促进你的float
为双在传递的时候。
如前所述你会得到不同的输出值,因为cout
一个用科学记数法和printf
默认为6小数位。如果使用增加值
printf("%.013f \n",i);
您将获得相同的值。
现在并非所有的十进制数都可以用浮点表示来表示,这就是为什么你没有得到你期待的结果。
而且here's如何罪可能不同的平台上实现一个问题,你就可以明白为什么PI的正弦值可能不是0
这并不奇怪,[它在科学记数法(HTTP:// coliru .stacked-crooked.com/a/07639be715a618c9) – Borgleader 2015-03-13 14:35:18
应该是'int main()'。 – 2015-03-13 14:36:08
这是什么“奇怪的输出”? – Kvothe 2015-03-13 14:38:16