2024-04-27 02:19:27 发布
网友
我试图计算一个非常大的数(<;=10^19)的最接近的2^n
我试过使用数学.log(数字,2)。但对于非常大的数字来说,这是错误的结果。在不使用其他库的情况下,我应该如何做到这一点?你知道吗
a = 9843649374639837463 # a is any num between 1 and 10^9 number = int(math.log(a,2))
大整数输入被转换成精度有限的浮点,因此some input precision is being lost。而且,math.log2()比更精确数学.log()因为它对基2进行了微调。你知道吗
有一个int方法将在精确的bit_length()上失效:
>>> a = 9843649374639837463 >>> a.bit_length() 64 >>> bin(a) '0b1000100010011011101010101111001111001100111001110101000100010111'
注意,浮点日志非常接近,但并不精确:
>>> a = 9843649374639837463 >>> 2.0 ** math.log2(a) 9.843649374639845e+18 >>> abs(a - 2.0 ** math.log2(a)) 8192.0
大整数输入被转换成精度有限的浮点,因此some input precision is being lost。而且,math.log2()比更精确数学.log()因为它对基2进行了微调。你知道吗
有一个int方法将在精确的bit_length()上失效:
注意,浮点日志非常接近,但并不精确:
相关问题 更多 >
编程相关推荐