题目连接:

P5706 【深基2.例8】再分肥宅水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

我提交的:

 1 #include<iostream>
2 #include<iomanip>
3 using namespace std;
4 int main(){
5 float a;
6 int b;
7 cin >> a >> b;
8
9 cout << setprecision(3) << a / b << endl;
10 cout << b * 2 << endl;
11 }

然而,只有一个AC,思考良久,不知为何而错。无奈看了看题解,发现人家比我多了一个"fixed"。那这个"fixed"到底是什么呢?

网上寻找了一圈,看见人家说:“如果一个数字太大,无法使用 setprecision 指定的有效数位数来打印,则许多系统会以科学表示法的方式打印。”

经过尝试后,发现果真如此:

所以应该加上fixed来控制位数。

那么,为什么setprecision不能这样输出呢?我又找了一圈,我发现我对setprecision的理解完全错了。

我过去曾认为:setprecision就是传统意义上,按照我们人脑控制的小数点位数。结果好像跟setw一样的效果,都是控制总有效位数?

现在,问题来到了setw和setprecision的区别:

setw(n): 右对齐,不够位数左边加空格,可以用setfill()来控制左边填充的东西

setprecision(n): 左对齐,不够位数不填充,对于小数点后的0会自动省略。

    double a = 123.321;
double b = 32.21;
//cin >> a >> b;
double num = a / b;
cout << "结果:" << endl;
cout << fixed << setw(6) << num << endl; //看看是不是对setw有效
cout << setprecision(6) << num << endl;
cout << num << endl; //看看是不是对下面也有效
cout << setprecision(2) << num << endl;
cout << num << endl; //确实有效
cout << setprecision(1) << num << endl;
  cout.setf(ios::fixed);  //加上这一句也可以
结果:
3.828656
3.828656
3.828656
3.83
3.83
3.8 D:\C++程序\try1\Debug\try1.exe (进程 63548)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

结论:加上fixed后,经过尝试,setpricision可以控制小数位数,但是setw却不行。

总结:

  1. 如果cout要控制小数点位数,那么使用setprecision时要加上fixed;
  2. fixed对setprecision都有效果,对setw没有。
  3. setw只对下一个输出值有效,而setprecision对后面的输出都有效。

洛谷 P5706 【深基2.例8】再分肥宅水的更多相关文章

  1. 洛谷——P1832 A+B Problem(再升级)

    P1832 A+B Problem(再升级) 题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛 ...

  2. 洛谷P1832 A+B Problem(再升级) [2017年4月计划 动态规划03]

    P1832 A+B Problem(再升级) 题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛 ...

  3. 洛谷 P1832 A+B Problem(再升级)

    题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n ...

  4. 洛谷P1832 A+B Problem(再升级)

    放题解 题目传送门 放代码 #include<bits/stdc++.h> using namespace std; ];//n为被分解数 a数组用于存储素数 ];//dp数组用于存储方案 ...

  5. 洛谷P1832 A+B Problem(再升级) 题解 完全背包方案计数

    题目链接:https://www.luogu.com.cn/problem/P1832 题目大意: 给定一个正整数n,求将其分解成若干个素数之和的方案总数. 解题思路: 首先找到所有 \(\le n\ ...

  6. 洛谷P1478 陶陶摘苹果(升级版)【水题】

    又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s ...

  7. 【洛谷P2907】 【USACO08OPEN】农场周围的道路 水模拟分治

    P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 题目描述 Farmer John's cows have taken an interest in ex ...

  8. 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 使用四种算法

    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 水题一道…… 题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. ...

  9. 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...

随机推荐

  1. Java递归与基础复习

    Day01-基础复习,递归 1.递归 定义:指在当前方法内调用自己,即函数内部调用本函数 分类: 直接递归和间接递归 直接递归成为方法自身调用自己 间接递归可以A方法调用B方法,B方法调用C方法,C方 ...

  2. Linux CentOS7.X-目录切换

    一.cd 命令 在Linux中,进行目录的切换需要使用cd命令. 二.Linux目录结构  三.Linux CentOS7中几个常用目录切换方式 1.cd usr 切换到当前目录下的usr目录. 2. ...

  3. vue的拖拽vuedraggable组件使用方法

    <template>   <div id="app">     <vuedraggable class="wrapper"     ...

  4. Thread线程基本写法用法

    //线程属性 protected Thread workerThread; protected bool isWorkerThreadStopped = true; public void Initi ...

  5. SETTLE约束算法的批量化处理

    技术背景 在上一篇文章中,我们介绍了在分子动力学模拟中SETTLE约束算法的实现与应用,其中更多的是针对于单个的水分子.但由于相关代码是通过jax这一框架来实现的,因此对于多分子的体系,可以采用jax ...

  6. dopamine源码解析之dqn_agent

    目录 epsilon函数 DQNAgent构造函数核心参数 DQNAgent核心函数 tf.make_template 核心数据流图 epsilon函数 linearly_decaying_epsil ...

  7. Applied Social Network Analysis in Python 相关笔记

  8. sqlserver 中,如何将getdate()时间的时分秒固定为00:00:00或者忽略不要

    在使用getdate()时,时间会实时刷新,那么我们就要再查询的时候就需要精确到毫秒后三位,非常难受,那么为了解决这个问题我们可以通过以下几种方法进行固定或者去掉毫秒 1.将毫秒固定为00:00:00 ...

  9. phpmyadmin 4.8.1 文件包含漏

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 3.点击新建项目按钮,弹出对画框中选择(C:\ ...

  10. leetcode210.拓扑排序

    拓扑排序能否成功,其实就是看有没有环 有环:说明环内结点互为前置,永远也不可能完成 无环:是线性的,可以完成 DFS方法 思路: 逆向思维,遍历到边界点(无邻接点相当于叶子),再不断回溯将结点加入到结 ...