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) 补充阅读: 或者,您

当我尝试用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>>1
),这与除以二相同,因为


(N>>1)*(N+1)
给出了与以前相同的答案。

使用
/
而不是
/