1

如果我有这样的整数:

123456789

我只想返回 12345 - 所以将数字修剪为 5 位数的长度。

如果不先转换为字符串,这可能吗?我看不到任何内置功能可以做到这一点。

4

3 回答 3

9
import math

def five_digits(number):
    ndigits = int(math.log10(number))+1
    try:
        return number//int(10**(ndigits-5))
    except ZeroDivisionError:
        return number

print five_digits(10000000)
print five_digits(12345678)
print five_digits(12345)
print five_digits(1234)  #don't know what you want to do with this one...
于 2013-06-06T21:36:35.177 回答
0

使用整数除法(//) 123456789 // 10000 将返回 12345。

于 2013-06-06T21:36:45.883 回答
0

例如:

number = 123456789
while number >= 10**6:
    number = number/10

#wrapped in a function for n arbitrary
def trim_to_n(number, n):
    negative = False
    if number < 0:
        negative = True
        number = number * -1
    limit = 10**(n+1)
    while number >= limit:
        number = number/10
    if negative:
        return number * -1
    return number

更新:对于负值:D

希望这可以帮助!:)

于 2013-06-06T21:37:09.500 回答