求两个整数的商,结果保留六位小数(第一章 1.1)
作者:互联网
一、问题描述
【问题描述】
输入两个整数a和b,求a/b的结果。
【输入形式】
整数a和整数b,空格分隔
【输出形式】
a/b的结果
【样例输入】
4 2
【样例输出】
2.000000
二、题目分析
1.输入的两个数为整数,输出的却是小数(一般小数会被默认为双精度实型)
所以我们可以再定义一个双精度变量:d,用来储存两个整数的商。
但是还存在一个问题:两个整型数据相除得到的数据仍然是一个整型,不能直接赋给双精度变量d
所以我们需要进行强制类型转换
2.强制类型转换
我们学校的教材上介绍了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;
3.输出六位小数
学习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;
}
三、总结
关于强制类型那里,有个群友有另一种解法,不过因为没授权,我在这就不引用了【狗头】
第一次写博客,欢迎大家评论区指正
标签:类型转换,输出,cout,六位,double,整数,小数,1.1 来源: https://blog.csdn.net/weixin_64954259/article/details/123239036