大于或等于对数值的最小整数
我有一个整数,比如说是'51',我想把这个数字转换成二进制形式。在这个过程中,我需要计算 log(51)
,这样我会得到一个浮点数,结果是 3.93182563272
。但是我希望得到一个整数格式的结果,比如 4
,这样就可以用来表示51这个数字的二进制形式。
对数值的计算可以这样进行:
import math
math.log(51)
2 个回答
0
你可以在把它转换成整数之前,先使用一个向上取整的函数,这样可以确保结果是一个更大的整数:
math.ceil(math.log(51)) # round up
你还应该看看:
math.floor() # round down
math.round()
如果你需要把它保存为整数类型,可以把它转换成这种类型:
int()
2
如果你想知道二进制数字的数量,那就是用基数 2
来计算,而math.log
默认是计算自然对数(基数是 e
)。你可以用第二个参数来指定其他的基数。然后你可以用math.ceil
来把这个数字向上取整。
math.ceil(math.log(51, 2))
6.0
你没有说明使用的 Python 版本,但如果你用的是 Python 3(感谢 @delnan),你可以用math.log2
,这样会更准确:
math.ceil(math.log2(51))
6.0
numpy
也有一个 log2 方法(不过对于这个应用来说可能有点复杂)。
math.ceil
实际上返回的是一个浮点数,所以如果你想要一个整数,可以把这个表达式放在 int
里:
int(math.ceil(math.log(51, 2)))
6
顺便说一下,还有一个函数bin
,你可能也想看看。它会返回一个字符串,里面是一个整数的二进制表示:
bin(51)
'0b110011'
...不过如果你不想去搞这些(再次感谢 @delnan),你可以直接用bit_length
:
(51).bit_length()
6