python中1到N之间的数字求和问题
当我尝试用python计算1到N个数字之间的数字总和时,我尝试了以下代码python中1到N之间的数字求和问题,python,Python,当我尝试用python计算1到N个数字之间的数字总和时,我尝试了以下代码 N = int(input()) S = int(N*(N+1)/2) print(S) 在我尝试输入N=641009859之前,它运行良好。预期结果应该是=205446819988104870 但结果是=205446819988104864 这里怎么了?N*(N+1)/2进行浮点数除法,浮点数不能全部精确表示。进行整数除法:N*(N+1)//2提供您所期望的(205446819988104870) 补充阅读: 或者,您
N = int(input())
S = int(N*(N+1)/2)
print(S)
在我尝试输入N=641009859之前,它运行良好。预期结果应该是=205446819988104870
但结果是=205446819988104864
这里怎么了?N*(N+1)/2
进行浮点数除法,浮点数不能全部精确表示。进行整数除法:N*(N+1)//2提供您所期望的(205446819988104870
)
补充阅读:
或者,您可以将位向右移动一位(N>>1
),这与除以二相同,因为
(N>>1)*(N+1)
给出了与以前相同的答案。使用/
而不是/
。