截断一个int

时间:2013-11-27 20:51:48

标签: python

晚上好,

我很好奇你将如何“削减”一个整数。 例如:

num = 12345678 
num_shrunk = "for example 3"(num)
print(num_shrunk)
123

我知道圆函数,但我需要精确。我已经尝试过格式(num,“3d”)但是小数位。我也不能说只打印num [0:3]因为它不是整数。

这样做是否有一种简单的方法,我显然没有看到?

3 个答案:

答案 0 :(得分:1)

N=3
int(str(num)[:N])

应该这样做......

你也可以用数学方法做到这一点

def nDigits(int_n):
    return nDigits(int_n//10) + 1 if int_n > 10 else 1
num//(10*(nDigits(num)-N)
# nDigits can also be caluclated as follows: numDigits = int(math.log(num,10))+1

虽然因为您仍然需要将其转换为字符串以获得总位数

答案 1 :(得分:0)

我可以想到使用模数除法在R中实现此目的的一种方法:

> num <- 12345678
> numshrunk <- (num - num %% 100000) / 100000
> numshrunk
123

您可以在python中应用相同的技术,将“&lt; - ”和“%%”分别替换为适当的变量赋值和模数除法运算符。

以上更有用的版本:

> N = 3
> num <- 12345678
> numshrunk <- (num - num %% 10^(N-1)) / 10^(N-1)
> numshrunk
123

答案 2 :(得分:0)

def shrink(number,amount=0): return number//(10**amount)
print shrink(1234,2)

应按预期工作。 d // i是地板划分,d ** i是功率倍增。不给予金额(收缩(5))将返回5.