出现的问题
看下面的一小段代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x=-1.0;
printf("%.2lf\n",x);
return 0;
}
输出结果:
一个很离谱的数据,开始还以为软件出现了问题……,后来才发现,其实是输出的问题,我们在看下面的代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x=-1.0;
printf("%.2f\n",x);
return 0;
}
输出结果:
是一个正确的结果,我们再看下面:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long double x=-1.0;
printf("%.2f\n",x);
return 0;
}
下面又正常了:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long double x=-1.0;
printf("%.2lf\n",x);
return 0;
}
所以,在codeblocks中,double的输出是用%f的,而输入看下面:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x;
scanf("%lf",&x);
printf("%.2f\n",x);
return 0;
}
我们看到,double的输入是用%lf的。
总结一下:
double输入是%lf
double输出是%f
float输入时%f
float输出时%f
至于long double,建议用cin,cout来输入输出