ruby - Rust 数学错误

标签 ruby go rust

我在 Rust 中有以下代码:

fn main() {

    let mut sum = 0is;
    for i in (0is..100000000is) {
        sum = sum + i;
    }
    println! ("{}", sum);
}

结果,我有 4999999950000000

但是,当我尝试使用 Golang 和 Ruby 检查此代码时 - 我看到了另一个结果

golang 版本:

package main

import "fmt"

func main() {
  var sum = 0
  for i := 1; i < 99999999; i++ {
      sum += i
  }

  fmt.Println(sum)
}

ruby 版本:

@sum = 0
(1...99999999).each do |i|
  @sum += i
end

puts @sum

Ruby 和 Golang 的结果都是 4999999850000001

PS:是的,我知道 100000000 和 99999999 之间的区别 - 这是因为在 0is..100000000is

中包含 Rust 中的正确部分

最佳答案

您没有对 Go 和 Ruby 中的最后一个元素 (99999999) 求和:

func main() {
    var sum = int64(0)
    for i := int64(1); i <= 99999999; i++ {
        sum += i
    }
    fmt.Println(sum)
}

4999999950000000

关于ruby - Rust 数学错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021991/

相关文章:

arrays - var array [rows] [columns] int在Go中将维度分配给数组

c - 如何从 Rust 库访问全局 C 结构数组?

Rust - 为什么借用 &mut 两次时它不会给我一个错误

ruby-on-rails - Rails 4.2 Action Controller :BadRequest custom error message

ruby - "convenience"创建哈希的方法

Ruby block 、过程和局部变量

multithreading - golang可以启动多线程来处理网络IO吗

ruby - 尝试运行捆绑安装时,我不断收到错误安装 puma (5.6.4) 时发生错误,并且 Bundler 无法继续 MacOS 13.1

rest - Go Gorilla Mux 没有按预期路由

rust - 如何克隆函数指针