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)

}

红宝石版本:


@sum = 0

(1...99999999).each do |i|

  @sum += i

end


puts @sum

Ruby 和 Golang 的结果都是 4999999850000001


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


紫衣仙女
浏览 163回答 1
1回答

繁花如伊

您没有对 Go 和 Ruby 中的最后一个元素 (99999999) 求和:func main() {&nbsp; &nbsp; var sum = int64(0)&nbsp; &nbsp; for i := int64(1); i <= 99999999; i++ {&nbsp; &nbsp; &nbsp; &nbsp; sum += i&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Println(sum)}4999999950000000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go