一本通 2061:【例1.2】梯形面积
Topic:
Ideas:
此题对于各位小伙伴来说一定非常简单,详细思路就不用我说了,记录下来只是为了复习一下格式化输出相关
Code:
//2025/04/15
#include<iostream>
using namespace std;
int main() {float height;//float triangle=150;float trapezium;height = triangle / 30;trapezium = 40* height / 2;printf("%.2f",trapezium);return 0;
}
Review:
C++中的格式化输出主要是有3种形式,第一种是使用流操作算子(流操纵算子),第二种是成员函数,第三种则是使用标准输出printf(个人觉得第三种形式更为简单通用)
- 流操作算子使用时需要加上iomanip头文件,流操纵算子需要与cout和<<连用,以下是常用的输出流操纵算子以及使用示例 想要进一步了解可参考以下文章: C++ cout格式化输出完全攻略
流操纵算子 作用 *dec 以十进制形式输出整数 fixed 以普通小数形式输出浮点数 scientific 以科学计数法形式输出浮点数 *right 右对齐,即在宽度不足时将填充字符添加到左边 setw(w) 指定输出宽度为 w 个字符,或输人字符串时读入 w 个字符 setfill(c) 在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充) setprecision(n) 设置输出浮点数的精度为 n。 在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字。 在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数。 #include<iostream> #include<iomanip> using namespace std; int main() {float a;int b = 6;a = b * 3.14;cout << fixed << setprecision(2) << a << endl;return 0; }
- 使用cout对象的成员函数,例如cout.precision()和cout.width()来设置浮点数的精度和输出宽度 常用的成员函数如下:
precision(n) setprecision(n) 设置输出浮点数的精度为 n。 width(w) setw(w) 指定输出宽度为 w 个字符。 fill(c) setfill (c) 在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)。 setf(flag) setiosflags(flag) 将某个输出格式标志置为 1。 unsetf(flag) resetiosflags(flag) 将某个输出格式标志置为 0。 cout.setf(ios::scientific); out.precision(8); cout << 12.23 << endl;
- 使用标准输出函数printf()进行格式化输出,通过指定格式控制符来实现不同数据类型的格式化输出,例如,格式控制符
%.5f
用于处理浮点数输出,它能确保输出的数值精确到小数点后 5 位;而%2d
则是针对整数输出的控制符,其作用是输出一个 2 位的整数,若实际数值不足 2 位,会在右侧用 0 进行占位;%-3d
同样用于整数输出,它会输出一个 3 位的整数,要是数值不够 3 位,会在左侧用 0 进行占位。
最后的最后有一个小知识点:
在计算机中,数值的存储和处理是基于二进制的。而十进制小数和二进制小数之间并非总是能精确转换,这就导致了部分十进制小数在计算机里以二进制形式存储时会出现精度损失。要把十进制小数转换为二进制小数,可采用 “乘 2 取整,顺序排列” 的方法。这主要是因为计算机在存储浮点数时,使用的存储空间是有限的,像 float
类型通常用 32 位存储,double
类型用 64 位存储。例如 0.14 不能用有限位二进制小数精确表示,所以计算机只能截取一定位数的二进制小数来近似表示它,这就造成了精度损失。
望各位小伙伴们多多指教