Marty Wallace
Marty Wallace

Reputation: 35734

python trim number without converting to string first

if i have an integer like this:

123456789

I would like to return only 12345 - so trimming the number to a length of 5 digits.

Is this possible without first converting to a string? I cant see any built in function to do this.

Upvotes: 2

Views: 6222

Answers (3)

mgilson
mgilson

Reputation: 309909

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

Upvotes: 9

Paulo Bu
Paulo Bu

Reputation: 29794

For example:

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

UPDATED: For negative values :D

Hope this helps! :)

Upvotes: 1

user2461465
user2461465

Reputation: 9

Use integer division(//) 123456789 // 10000 will return 12345.

Upvotes: 0

Related Questions