Python中取数字后N位推荐用取模运算:正整数直接num%(10n),负数建议abs(num)%(10n);小数需先转整数再处理;位数不足时不补零,需补零可用zfill或格式化。

在 Python 中取数字的后几位,最常用、最直接的方法是用取模运算(%),配合 10 的幂次。比如取后 2 位,就对 100 取模;取后 3 位,就对 1000 取模。
用取模运算获取后 N 位(推荐)
适用于整数,简洁高效:
-
正整数:直接用
num % (10 ** n) -
负数:Python 的取模结果非负(如
-123 % 100得 77),若需保持“最后几位数字”的直观含义(即忽略符号,取绝对值的后几位),建议先用abs(num)
示例:
num = 12345 n = 3 last_n = num % (10 ** n) # → 345num = -12345 last_n = abs(num) % (10 ** n) # → 345(更符合直觉)
转字符串切片(适合任意数字,含小数)
如果数字可能是小数,或你更习惯字符串操作,可转成字符串再切片:
立即学习“Python免费学习笔记(深入)”;
BIWEB 门户版几经周折,最终与大家见面了。BIWEB门户版建立在ArthurXF5.8.3底层上,有了更加强大的功能。 BIWEB WMS v5.8.3 (2010.1.29) 更新功能如下: 1.修正了底层getInfo方法中的调用参数,做到可以根据字段进行调用。 2.修正了栏目安装和卸载后,跳转链接的错误。 3.修正所有栏目分类系统,提交信息页面错误。 4.新增后台删除信息后仍停留原分
- 对整数:
str(num)[-n:],但注意负数带负号(如str(-12345)[-3:]是'345',其实也刚好可用) - 对浮点数:先决定是否保留小数部分?若只关心“数值末尾数字”,通常应先转为整数(如四舍五入或取整),再处理;否则字符串切片会包含小数点和小数位,逻辑易混乱
示例:
num = 12345 str(num)[-3:] # → '345'num = -12345 str(num)[-3:] # → '345'(因为 '-12345'[-3:] 是从末尾取 3 个字符)
num = 123.456 int(round(num)) # → 123,再取后两位:str(123)[-2:] → '23'
注意事项和边界情况
实际使用时容易忽略这些细节:
- 若数字位数不足 N 位(如
num=45, n=4),取模得 45,字符串切片得'45'—— 两者都正确,不会补零;如需固定长度(如补前导零),可用str(num).zfill(n)[-n:]或格式化:f'{num % (10**n):0{n}d}' -
10 ** n在 n 很大时可能影响性能或精度,但日常场景(n ≤ 20)完全没问题 - 浮点数存在精度问题(如
0.1 + 0.2 != 0.3),不建议直接对浮点数做取模取后几位;应先转换为整数尺度(如乘以 10ᵏ 后取整)
基本上就这些。整数用取模最快最稳,需要兼容小数或强调可读性时用字符串,注意补零和负数处理即可。










