其他分享
首页 > 其他分享> > 求两个整数的商,结果保留六位小数(第一章 1.1)

求两个整数的商,结果保留六位小数(第一章 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