0

0

Rust 与 Go/Ruby 循环范围差异导致求和结果不一致的深度解析

霞舞

霞舞

发布时间:2026-01-11 11:49:02

|

402人浏览过

|

来源于php中文网

原创

Rust 与 Go/Ruby 循环范围差异导致求和结果不一致的深度解析

rust 的 `..` 半开区间(不含右端点)与 go/ruby 中常见的 `

在 Rust 中,0is..100000000is 表示从 0(含)到 100000000(不含)的半开区间,即实际遍历 i = 0, 1, 2, ..., 99999999,共 100,000,000 个整数,其和为:

$$ \sum_{i=0}^{99999999} i = \frac{99999999 \times 100000000}{2} = 4999999950000000 $$

而原始 Go 和 Ruby 代码存在双重偏差

  • ✅ Go 使用 i := 1; i
  • ✅ Ruby 使用 (1...99999999) → 同样是半开区间,等价于 1..99999999,即 1 到 99999998;
    → 二者实际计算的是 $\sum_{i=1}^{99999998} i = \frac{99999998 \times 99999999}{2} = 4999999850000001$,与 Rust 结果自然不同。

统一逻辑的修正方案如下

Rust(推荐显式类型与现代语法):

fn main() {
    let mut sum: u64 = 0;
    for i in 0..=99999999 { // 使用 ..= 表示闭区间(含右端点)
        sum += i;
    }
    println!("{}", sum); // 输出:4999999950000000
}

Go(修正为闭区间语义):

无阶未来模型擂台/AI 应用平台
无阶未来模型擂台/AI 应用平台

无阶未来模型擂台/AI 应用平台,一站式模型+应用平台

下载
package main

import "fmt"

func main() {
    var sum int64 = 0
    for i := int64(0); i <= 99999999; i++ { // 注意:起始为 0,且使用 <=
        sum += i
    }
    fmt.Println(sum) // 输出:4999999950000000
}

Ruby(改用闭区间范围):

sum = 0
(0..99999999).each { |i| sum += i } # .. 表示闭区间(含末尾)
puts sum # 输出:4999999950000000

⚠️ 关键注意事项:

  • Rust 的 .. 是半开(左闭右开),..= 是闭区间(左右均含);
  • Go 无原生区间语法,需显式用
  • Ruby 中 ... 是半开,.. 是闭区间 —— 与 Rust 相反,极易混淆;
  • 所有语言中,若求和范围较大(如亿级),务必使用 u64/int64 等足够位宽类型,避免整数溢出(Rust 默认 i32 在此场景会 panic 或截断);
  • 更安全、更符合数学直觉的方式:直接使用公式 n * (n + 1) / 2 计算 0..=n 的和,避免循环误差与性能损耗。

总结:跨语言开发时,切勿假设区间语义一致;始终以文档为准,优先使用显式边界(如 ..=、

相关专题

更多
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全

C++系统编程中的内存管理是指 对程序运行时内存的申请、使用和释放进行精细控制的机制,涵盖了栈、堆、静态区等不同区域,开发者需要通过new/delete、智能指针或内存池等方式管理动态内存,以避免内存泄漏、野指针等问题,确保程序高效稳定运行。它核心在于开发者对低层内存有完全控制权,带来灵活性,但也伴随高责任,是C++性能优化的关键。

10

2025.12.22

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

78

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

46

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

121

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

11

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

71

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

370

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

45

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.6万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号