#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 取出来。


四、数据类型:intdouble

类型 作用 示例
int 存储整数 103
double 存储小数 10.310.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.0double 类型。
  • 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;
}