Python 3.x Math.log大数字的错误结果
Python 3.x Math.log大数字的错误结果,python-3.x,algorithm,math,Python 3.x,Algorithm,Math,math.log2和math.log对一些高数值给出了错误的结果,通过在线py解释器和本地机器进行了测试 >>>print(2**72) >>>4722366482869645213696 #Correct >>>math.log2(4722366482869645213697) >>>72.0 #Wrong >>>math.log(4722366482869645213697,2) >
math.log2
和math.log
对一些高数值给出了错误的结果,通过在线py解释器和本地机器进行了测试
>>>print(2**72)
>>>4722366482869645213696 #Correct
>>>math.log2(4722366482869645213697)
>>>72.0 #Wrong
>>>math.log(4722366482869645213697,2)
>>>72.0 #Wrong
>>>math.log2(39614081257132168796771975174)
>>>95.0 #Wrong
>>>print(2**95)
>>>39614081257132168796771975168 #Correct
我遗漏了什么还是它的一些错误?您遗漏了
math.log
为您提供的最大精度为52位
您的答案在表述范围内是正确的。实际答案约为72.00000000000000003 如果绝对误差小于该范围内的浮点误差,则得到计算机可以存储的最接近的64位浮点值 如果您想检查一个整数是否是2的精确幂,那么您可以检查是否只有它最左边的位是1
if 1 << (x.bit_length() - 1) == x:
print("x is a power of 2")
如果1为什么72.0“错误”?你想要什么样的浮点数?嘿。72.0建议它与2**72相同,而不是,它应该返回类似于71.xxxxxxxx的值。你的问题是检查一个整数是否是2的幂。下次你提问时,包括你问题的背景以及你想解决的问题。同时,请看我的答案。以及如何将decimal与math.log一起使用?默认情况下,它返回一个浮点结果。您将找到该问题的答案。虽然,你真的需要这样的精度吗?我找不到任何适合我的例子的东西,我需要很好地告诉你,在这样高的数字上,数字是否是2的幂,所以我想我需要这样的精度。你的输入总是整数吗?对于整数,只需检查最左边的位是否为1。我在回答中加了这个,非常聪明,谢谢!