【发布时间】:2018-10-26 05:38:51
【问题描述】:
当我运行代码时
b = 7**7
我得到 b 为 823543
但是当我运行时
b= 823543.0**(1.0/7.0)
它给我 b 为 6.999999999999999
如果它像 4**(1/2) 这样简单,则返回 2。
我的问题是为什么 python 不只返回一个完美的 7?
我也这样做是为了检查一个数字是否可以写成 n 可以写成 p^q 的形式,其中 p>0 和 q>1 这样做我这样做了:
def isPower(self, A):
possible = 0 # Integer value to check if it is possible , 0 assuming it is false initally
if(A==1):
return 1
for i in xrange(2,A-1):
res = float(A)**(1.0/float(i)) #Check if it has sqaure root or cube root up untill A-1
if(res.is_integer()): #If taking the power gives me whole number then saying it is possible
possible = 1
break
return possible
此逻辑因 823543 等更高的数字而失败,因为电源返回的值不精确我将如何解决这个问题?
【问题讨论】:
标签: python