【问题描述】
输入两个整数a和b,求a/b的结果。
【输入形式】
整数a和整数b,空格分隔
【输出形式】
a/b的结果
【样例输入】
4 2
【样例输出】
2.000000
所以我们可以再定义一个双精度变量:d,用来储存两个整数的商。
但是还存在一个问题:两个整型数据相除得到的数据仍然是一个整型,不能直接赋给双精度变量d
所以我们需要进行强制类型转换
我们学校的教材上介绍了C++的两种强制类型转换
int a=9,b=5; double d1,d2; d1=(double) a/b; //d1=1.8 d2=(double) (a/b); //d2=1.0
两种写法输出的结果不一样
因为前者是先进行类型转换,再做除法操作;而后者是先计算,再类型转换(后者的小数点后面全为0)
因为a b 均为整型 相除后会自动舍弃小数点后面的数字,只保留整数部分。所以此处我们必须先进行类型转换,再进行除法操作。
d=(double) a/b;
学习C++的第一天遇到的第一题,我自己觉得最难的就是输出六位小数了
所以C++输出如何保留六位小数
1.一定要引入头文件
#include <iomanip>
//第一种写法 cout<<setiosflags(ios::fixed)<<setprecision(2);
//第二种写法 cout.setf(ios::fixed); cout<<setprecision(2);
//第三种写法 cout<<fixed<<setprecision(6);
前两种写法一样,第三种为简写,个人更喜欢第三种
//setprecision(n)的功能是控制浮点数显示有效数字个数
想保留几位小数n就等于几
//fixed意味着是固定点显示,所以与setprecision(n)合用指小数位的精度
所以整段代码为
#include<iostream> #include<iomanip> using namespace std; int main() { int a,b; double d; cin>>a>>b; d =( double)a/b ; cout<<fixed<<setprecision(6)<<d<<endl; return 0; }
关于强制类型那里,有个群友有另一种解法,不过因为没授权,我在这就不引用了【狗头】
第一次写博客,欢迎大家评论区指正