获取一个整数的最后三位数字

12

我希望将 23457689 更改为 689,将 12457245 更改为 245 等整数。

我不需要四舍五入,也不想转换为字符串。

有没有想法在 Python 2.7 中如何实现?

2个回答

24

使用%运算符:

>>> x = 23457689
>>> x % 1000
689

%mod(即取余运算)操作。


谢谢!这正是我所需要的。 - Luke Gatt

11

为了正确处理正数和负数:

>>> x = -23457689
>>> print abs(x) % 1000
689
作为一个可以选择要保留前导数字位数的函数:
import math
def extract_digits(integer, digits=3, keep_sign=False):
    sign = 1 if not keep_sign else int(math.copysign(1, integer))
    return abs(integer) % (10**digits) * sign

避免转换为str的限制过于迂腐。如果数字格式可能会更改,或需要保留的尾数格式可能会更改,则转换为str是一种不错的方法。

>>> int(str(x)[-3:])
              ^^^^^ Easier to modify this than shoe-horning the mod function.

谢谢,但我只需要提取最后几位数字并绘制图表,这些值永远不会改变。我也可以使用这个。 - Luke Gatt
3
“每个程序员都会说:‘这些值永远不会改变……’” - ely
我喜欢这个答案,因为它提出了可能存在的负输入问题,并给出了基于字符串的替代方案。然而,我不喜欢它对如何处理负输入的假设(例如,如果他们想保留符号怎么办?),并且我不同意字符串切片比模函数更容易修改的说法。 - John Y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接