#10081. 2026/8/22/数位分离+小数格式化输出笔记
2026/8/22/数位分离+小数格式化输出笔记
C++ 课堂笔记:取模、除法与数据类型
一、取模运算 % —— 取个位
一个数取模 10,相当于获取这个数的个位数字。
123 % 10 = 3
45 % 10 = 5
6 % 10 = 6
规律
n % 10得到的是n的个位。%一般只用于整数运算。
二、整数除法 / —— 去掉个位
一个整数除以 10,相当于删除最后一位数字。
123 / 10 = 12
45 / 10 = 4
6 / 10 = 0
注意
- 在 C++ 中,两个整数相除,结果仍然是整数。
- 小数部分会直接截断,不是四舍五入。
三、提取一个整数的每一位
例如:n = 12345
| 数位 | 写法 | 结果 |
|---|---|---|
| 个位 | n % 10 |
5 |
| 十位 | n / 10 % 10 |
4 |
| 百位 | n / 10 / 10 % 10 |
3 |
| 千位 | n / 10 / 10 / 10 % 10 |
2 |
| 万位 | n / 10 / 10 / 10 / 10 % 10 |
1 |
核心思路
先用 /10 把目标位变成个位,再用 %10 取出来。
四、数据类型:int 与 double
| 类型 | 作用 | 示例 |
|---|---|---|
int |
存储整数 | 10、3 |
double |
存储小数 | 10.3、10.0 |
常见写法
double d = 10.3; // 正确,double 存小数
double d2 = 10; // 不报错,等价于 10.0
int a = 10.3; // 不报错,但精度丢失,a 的值是 10
注意
int接收小数时,会直接截断整数部分,不是四舍五入。- 需要小数结果时,应使用
double。
五、格式化输出:printf
double d3 = 10.1234;
printf("%.2lf", d3);
输出结果:
10.12
解释
%.2lf表示保留两位小数。2可以改成其他数字,例如%.3lf表示保留三位小数。lf用于输出double类型。
六、整数除法与浮点运算技巧
问题
10 / 3 = 3
在 C++ 中,两个整数相除,结果还是整数,小数部分会被舍去。
解决方法
要得到准确的小数结果,可以把其中一个数变成小数类型:
1.0 * n / 3
示例
int n = 10;
cout << 1.0 * n / 3; // 输出 3.33333
原理
1.0是double类型。1.0 * n会把整个表达式变成小数运算。- 不改变结果大小,但能保留小数精度。
七、易错点总结
| 易错点 | 正确理解 |
|---|---|
10 / 3 等于 3 |
整数除法会截断小数,不是四舍五入 |
int a = 10.3 得到 10 |
整数类型接收小数会丢失精度 |
| 想要小数结果 | 使用 1.0 * 或 3.0 等方法 |
% 用于小数 |
% 一般只用于整数 |
八、课堂口诀
- 取模个位,除十去尾。
- 整数除法会截断,要得小数乘 1.0。
- int 存整,double 存小,赋值类型要看清。
九、完整代码示例
#include<bits/stdc++.h>
using namespace std;
int main() {
int n = 12345;
int ge = n % 10;
int shi = n / 10 % 10;
int bai = n / 10 / 10 % 10;
int qian = n / 10 / 10 / 10 % 10;
int wan = n / 10 / 10 / 10 / 10 % 10;
double d3 = 10.1234;
printf("%.2lf\n", d3); // 输出 10.12
cout << 1.0 * n / 3 << endl; // 小数结果
return 0;
}