引言:大家在写程序中多多少少会遇到这个问题,特别对一些初学者会出现这个问题,做个ACM竞赛的同学肯定都会用C语言的printf格式控制输出,但是习惯于用C++的同学也不是一点办法都没有啊,这篇blog中会介绍C++中如何使用,虽然稍微复杂一定,但是也不失为一种方法。

首先看一下代码(以求四个整数的和与平均值为例):

//求四个整数的和与平均值
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a,b,c,d,e;
double f;
cin>>a>>b>>c>>d;
e=a+b+c+d;//e存放和 ,为整数
f=(double)e/4;//f存放平均值 ,为double
printf("%d %.1f\n",e,f); //C语言控制格式输出,小数点后面保留一位小数
//C++输出流格式控制输出
cout<<e<<" "<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(1)<<f;
return 0;
}

  可以看到C语言的printf是很容易控制格式的,"%m.nf":输出浮点数,m为宽度,n为小数点右边数位

  同时注意到C++的cout输出流中使用到了两个函数setiosflags()和setprecision()

  下面介绍一下这两个函数:

     setiosflags()函数:setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定区域内的动作;

        iso::fixed 是操作符setiosflags 的参数之一,表示以定点的方式输出实数;

        iso::right 也是setiosflags 的参数,该参数的指定作用是在指定区域内右对齐输出;

     setprecision()函数:setprecision(n)可控制输出流显示浮点数的数字个数为n。C++默认的流输出数值有效位是6

   cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(1);

   合在一起的意思就是:输出一个右对齐的小数点后1位的浮点数,即作用是:控制小数点右边的位数。

参考资料:

  setprecision()与setiosflags()(c++小数点后面精确到n位)

  Printf()输出格式控制 setprecision()与setiosflags()(c++小数点后面精确到n位)

精确到小数点后n位的两种方法的更多相关文章

  1. 已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位

    问题:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位. 出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家. 考察点:基础算法的灵活应 ...

  2. C++中精确到小数点后任意位

    #include <iostream> #include <iomanip> //用setprecision(n)设置精度,其中n表示精确到小数点后n位 using names ...

  3. 【云栖社区002-二分估值法】要求不用数学库,求 sqrt (2)精确到小数点后10位(Java版)

    如题 初步审题的时候,想到的是暴力搜索:初步设置一个合法的种子,依次按照1e-2,1e-3,1e-4,1e-5,1e-6 , 1e-7...暴力搜索,额,就是太麻烦了. 打比赛搜索写多了,一看见题目就 ...

  4. JAVA除法保留小数点后两位的两种方法 Java Math的 floor,round和ceil的总结

    floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下 ...

  5. 计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码

    大家都知道π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题.现在有了电脑, 这个问题就简单了.电脑可以利用级数计算出很多高精度的值, 有关级数的问题请参 ...

  6. JAVA除法保留小数点后两位的两种方法

      1.(double) (Math.round(sd3*10000)/10000.0);  这样为保持4位 (double) (Math.round(sd3*100)/100.0); 这样为保持2位 ...

  7. 2020-07-28:已知sqrt (2)约等于 1.414,要求不用数学库,求sqrt (2)精确到小数点后 10 位。

    福哥答案2020-07-28: 1.二分法.2.手算法.3.牛顿迭代法.基础是泰勒级数展开法.4.泰勒级数法.5.平方根倒数速算法,卡马克反转.基础是牛顿迭代法. golang代码如下: packag ...

  8. halcon控制显示精度(精确到小数点后6位,精度足够了)

    实践应用 set_tposition (WindowHandle3,50, 50) write_string (WindowHandle3, '半径 D1=' +Ra[i]$'#f') set_tpo ...

  9. 如何计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码!

随机推荐

  1. css中的名词

    用到的单词 current 当前 hover 悬停 selected 挑选 disabled 禁用 focus 得到焦点 blur 失去焦点 checked 勾选 success 成功 error 出 ...

  2. zabbix修改默认密码

    1.mysql -u root -p 2.desc users; 3.select userid,alias,passwd from users; 4.update users set passwd= ...

  3. Bootstrap++:bootstrap-select 使用

    效果图: HTML: <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.or ...

  4. MacOS下VUEJS简单入门

    微信搜索"艺术行者",关注并回复关键词"vue"获取课程资料 上传的在线学习视频(黑马和传智双元,感谢) VueJs概述与快速入门 学习之前假设你已了解关于 H ...

  5. 00_01_使用Parallels Desktop创建WindosXP虚拟机

    打开paralles软件,选择文件->新建 继续 选择手动选择,之后勾选没有指定源也继续 选择要创建的操作系统(这里以XP为例,其他的windows系统安装基本都差不多) 根据需要选择,这里选择 ...

  6. github提交报错

    github正确提交步骤 https://www.cnblogs.com/alex-415/p/6912294.html 可能的错误 提交前没有先pull,主要的原因是在创建repository的时候 ...

  7. Python创建字符串

    Python创建字符串: 一般情况下可以使用 ' 或 " 创建字符串 或 使用引用字符串变量 或 字符串表达式. # 字符串的创建 # 使用 ' 或 “ 进行创建 strs = 'ABCDE ...

  8. PHP date_timestamp_get() 函数

    实例 返回今天的日期和时间的 Unix 时间戳: <?php$date=date_create();echo date_timestamp_get($date);?> 运行实例 » 定义和 ...

  9. PHP ftp_nb_fput() 函数

    定义和用法 ftp_nb_fput() 函数上传本地一个已经打开的文件,并在 FTP 服务器上把它保存为一个文件.(无阻塞) 该函数返回下列值之一: FTP_FAILED(发送/获取失败) FTP_F ...

  10. PHP stripcslashes() 函数

    实例 删除 "World!" 前面的反斜杠: <?php高佣联盟 www.cgewang.comecho stripslashes("Hello World!&qu ...