找到最接近2的幂的整数

时间:2015-01-30 03:30:18

标签: python

所以我试图找到最接近n的两个力量。例如10.5接近8比16。到目前为止,我知道如何为日志和ceil导入math *。我不知道该怎么办。

4 个答案:

答案 0 :(得分:5)

首先,我创建两个可能的结果/指数,之后我使用min函数,它返回最接近x的幂的指数。关键字参数key包含测量这两种能力之间距离的功能。

from math import log, ceil, floor
def closest_power(x):
    possible_results = floor(log(x, 2)), ceil(log(x, 2))
    return min(possible_results, key= lambda z: abs(x-2**z))

closest_power(11.5), closest_power(13.3)

输出

(3.0, 4.0)

答案 1 :(得分:0)

您将获得两个数字a和b。当a提升到某个幂p时,我们得到一个数字x。现在,您需要找到最接近b的x的值。

#User function Template for python3

def nearestPower(a,b):
    high=100000  #any big number
    sum=1
    while True:
        sum=sum*a;
        if(abs(sum-b)<high):
            high=abs(sum-b)
            c=sum
        if(abs(sum-b)>high):
            break;
    return c

答案 2 :(得分:0)

对于整数,您还可以检查数字的二进制表示形式的第二个数字。

import tkinter
canvas = tkinter.Canvas(width=640, height=480)
canvas.pack()
def function1(event):
    print(repr(event))
canvas.bind("ButtonPress-1", function1)
canvas.mainloop()

答案 3 :(得分:-1)

round(math.log(n, 2))

可能会工作。