math.sqrt函数python为两个不同的值

时间:2017-07-09 17:08:56

标签: python-3.x

我试图计算多维数据集的总和作为一个更大问题的一部分,我已经陷入困境。在下面编写的代码(相同函数的两个变体)中,当我传递一个较大的值,如45001时,我在两个函数中得到冲突的结果,如

import math

def cube_sum(n):
    return int(math.pow((n*(n+1)/2),2));

def cube_sum1(n):
    if n%2 != 0: return int(math.pow(n*((n+1)/2),2))
    else: return int(math.pow((n/2)*(n+1),2));

def calc:
    print('1:',cube_sum(45001));
    print('2:',cube_sum1(45001));
    print('3:',(int(45001*45002/2)**2)); # gives the correct answer

即使所有打印值都应该相同(显然),我得到的输出为

1: 1025292944081384960
2: 1025292944081384960
3: 1025292944081385001

在尝试分析时,我偶然发现了以下内容

 math.sqrt(1025292944081384960) == math.sqrt(1025292944081385001) # returns true

这里发生了什么?

0 个答案:

没有答案