Python 获取整数的最后三位数

Python 获取整数的最后三位数,python,integer,int,digit,Python,Integer,Int,Digit,我想把一个整数改成23457689到689,12457245到245等等 我不要求将数字四舍五入,也不希望必须转换为字符串 您知道如何在Python 2.7中实现这一点吗?使用%操作: >>> x = 23457689 >>> x % 1000 689 %是mod(即)操作。要正确处理正整数和负整数: >>> x = -23457689 >>> print abs(x) % 1000 689 作为一项功能,您可以选择要保

我想把一个整数改成23457689到689,12457245到245等等

我不要求将数字四舍五入,也不希望必须转换为字符串


您知道如何在Python 2.7中实现这一点吗?

使用
%
操作:

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

%
mod
(即)操作。

要正确处理正整数和负整数:

>>> 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.

谢谢这正是我所需要的。谢谢,但我只需要提取最后的数字并绘图,数值永远不会改变。我也可以用这个“值永远不会改变…”每个程序员都这么说。我喜欢这个答案,因为它提出了可能是负输入的问题,因为它提供了基于字符串的替代方案。但是,我不喜欢它对负输入应该如何处理做出假设(例如,如果他们想保留符号怎么办?),我不同意字符串切片比mod函数“更容易修改”。@JohnY嗯,例如,如果从固定精度的
float
中提取数字需要相同的代码,然后,
mod
将毫无用处(特别是考虑到舍入),但同样的基于
str
的规则(或者一个简单的更改,比如在
上拆分)可能仍然有效。
str
方法在整数的实际属性很重要(如
mod
-ing它)的情况下运行良好。。但当它是一个更复杂的数字属性时,它也能很好地工作。这就是我所说的在格式改变的情况下更加容易的意思<在这种情况下,code>mod对于非算术性更改很脆弱。