Python 为什么math.pow返回的值与**运算符不同?
我一直在努力解决这个问题: 底部的立方体体积为n^3,上面的立方体体积为 体积为(n-1)^3,依此类推,直到顶部有一个 体积为1^3 您将获得建筑物的总体积m。给我一罐 您找到了必须构建的多维数据集的数量n吗 这是我的密码Python 为什么math.pow返回的值与**运算符不同?,python,Python,我一直在努力解决这个问题: 底部的立方体体积为n^3,上面的立方体体积为 体积为(n-1)^3,依此类推,直到顶部有一个 体积为1^3 您将获得建筑物的总体积m。给我一罐 您找到了必须构建的多维数据集的数量n吗 这是我的密码 import math def find_nb(m): nb = 1 nb_vol = 0 while True: nb_vol += math.pow(nb, 3) if (nb_vol == m): return nb e
import math
def find_nb(m):
nb = 1
nb_vol = 0
while True:
nb_vol += math.pow(nb, 3)
if (nb_vol == m):
return nb
elif (nb_vol > m):
return -1
nb += 1
现在,当我尝试求解find_nb(2521115597681328384)时,它返回-1,而实际上它应该返回56352。如果我改变
nb_vol += math.pow(nb, 3)
到
一切正常为什么?math.pow
,它们只是近似值
**
运算符使用永远不会溢出的整数,这意味着它总是给出正确的结果。math.pow
,这只是近似值
**
运算符使用永远不会溢出的整数,这意味着它总是给出正确的结果。这是否回答了您的问题@Reznik这个问题更多的是关于性能而不是正确性。为了完整性,请到这里检查两个浮点数是否足够接近,可以称为相等@匿名。问题本身回答了这个问题。这是否回答了您的问题@Reznik这个问题更多的是关于性能而不是正确性。为了完整性,请到这里检查两个浮点数是否足够接近,可以称为equal@Anonymous。问题本身回答了这个问题。
nb_vol += nb ** 3