Rust数学错误

Ale*_*sev -4 ruby go rust

我在Rust中有以下代码:

fn main() {

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

结果,我有4999999950000000

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

golang版:

package main

import "fmt"

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

  fmt.Println(sum)
}
Run Code Online (Sandbox Code Playgroud)

Ruby版本:

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

puts @sum
Run Code Online (Sandbox Code Playgroud)

Ruby和Golang的结果是4999999850000001

PS:是的,我知道100000000和99999999之间的区别 - 这是因为包含在Rust中的正确部分0is..100000000is

sir*_*nga 5

你没有在Go和Ruby中总结最后一个元素(99999999):

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

4999999950000000
Run Code Online (Sandbox Code Playgroud)