Python中取数字后N位推荐用取模运算:正整数直接num%(10n),负数建议abs(num)%(10n);小数需先转整数再处理;位数不足时不补零,需补零可用zfill或格式化。
在 Python 中取数字的后几位,最常用、最直接的方法是用取模运算(%),配合 10 的幂次。比如取后 2 位,就对 100 取模;取后 3 位,就对 1000 取模。
适用于整数,简洁高效:
num % (10 ** n)
-123 % 100 得 77),若需保持“最后几位数字”的直观含义(即忽略符号,取绝对值的后几位),建议先用 abs(num)
示例:
num = 12345 n = 3 last_n = num % (10 ** n) # → 345num = -12345 last_n = abs(num) % (10 ** n) # → 345(更符合直觉)
如果数字可能是小数,或你更习惯字符串操作,可转成字符串再切片:
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'
实际使用时容易忽略这些细节:
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ᵏ 后取整)基本上就这些。整数用取模最快最稳,需要兼容小数或强调可读性时用字符串,注意补零和负数处理即可。