python trim number,不先转换为字符串

时间:2013-06-06 21:32:18

标签: python

如果我有这样的整数:

123456789

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

如果没有先转换为字符串,这可能吗?我无法看到任何内置函数来执行此操作。

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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

希望这有帮助! :)