首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大于或等于日志值的最小整数值

大于或等于日志值的最小整数值
EN

Stack Overflow用户
提问于 2014-05-09 11:46:38
回答 2查看 2.4K关注 0票数 0

我有一些整数计数,假设'51‘,我想用二进制数表示那么多整数。这里我需要做log(51),所以我得到一些浮点值作为3.93182563272。但我希望它以某种整数的格式表示为4,它可以用来表示51个整数。日志值可计算为

代码语言:javascript
复制
import math
math.log(51)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-09 11:53:56

如果您想要二进制数,那将是基2,而math.log默认返回自然对数(基本e)。第二个参数可以用来指定另一个基。然后,您可以使用math.ceil来汇总这个数字。

代码语言:javascript
复制
math.ceil(math.log(51, 2))
6.0

您还没有指定python版本,但是如果您有python 3 (谢谢@delnan),您可以使用math.log2,这应该更准确:

代码语言:javascript
复制
math.ceil(math.log2(51))
6.0

also has a log2 method (但是对于这个应用程序来说可能有点过分了)。

math.ceil实际上返回一个浮点数,所以如果您想要一个整数,可以用int包装表达式。

代码语言:javascript
复制
int(math.ceil(math.log(51, 2)))
6

顺便说一句,还有一个函数bin,您可能想看看它。它返回一个包含整数的二进制表示形式的字符串:

代码语言:javascript
复制
bin(51)
'0b110011'

...but如果您不想处理这些问题(再次感谢@delnan),可以直接使用bit_length

代码语言:javascript
复制
(51).bit_length()    
6
票数 2
EN

Stack Overflow用户

发布于 2014-05-09 12:00:01

在将其转换为int之前,可以使用天花板“整整”函数:

代码语言:javascript
复制
math.ceil(math.log(51)) # round up

你也应该看看:

代码语言:javascript
复制
math.floor() # round down
math.round()

如果需要将其保存为整数类型,则可以将其转换为该类型:

代码语言:javascript
复制
int()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23563819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档