下面代码输出后为啥是3.0?不应该是3.5吗?
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a=7/2;
printf("%.1lf\n",a);
return 0;
}
两个整数相除,系统默认得到一个整数,如7/3=2,8/3=2,18/10=1……
而想要得到小数,得在一个数的后面加个小数点,这样系统就会知道你想要的结果是小数而不是整数,改法如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a=7.0/2;//这里修改一下
printf("%.1lf\n",a);
return 0;
}
当然你也可以通过强制转换的方法,具体实现如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a;
a=(double)7/2;
printf("%.1lf\n",a);
return 0;
}
double a=7/2;
->
double a=7.0/2;
除数被除数至少一个是浮点,否则是整除
double a=7.0/2
因为两整数相除结果为整数
当两个数相乘时,尽管你用了double类型,但是代码计算的是7 / 2所得的结果向下取整的值,若你要保留1位小数,且输出结果为3.5的话,你代码的第五行需改为
double a = 7.0 / 2;
当你代码为7.0 / 2时,Dev—C++才知道你是需要浮点型。
所以,整体代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a=7.0 / 2;
printf("%.1lf\n",a);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:setvbuf(stdout,NULL,_IONBF,0);
我已经给出了具体的解决方案。希望对你有所帮助!