python - python中1到N之间数字求和的问题
问题描述
当我尝试使用 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
),这与除以 2 相同,因为二进制系统是如何工作的。
(N >> 1) * (N + 1)
给出与之前相同的答案。
推荐阅读
- javascript - (Symfony 4) FOS Js Routing Bundle - 路由 -------- 不存在。
- python - 带有二元和连续自变量的 statsmodels 的 logit
- python - 每次使用 pandas 和 python 处理多个文件时,从 txt 文件中读取单个变量
- windows - 如何在后台运行java进程并退出脚本
- java - 使用 apache cxf 的 Spring Boot 不使用 logback.xml
- drupal - 更改字段值并使用自定义按钮提交节点
- javascript - 嵌套 Object.keys forEach 循环和构建合并 JSON 对象数组的问题
- angular - 共享网络 + 移动项目上的 Angular 7 错误
- html - 在 R 的 Htmltables 中格式化表格
- c - 复制整数的低位字节,同时保留字节顺序