Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 数学错误_Ruby_Go_Rust - Fatal编程技术网

Ruby 数学错误

Ruby 数学错误,ruby,go,rust,Ruby,Go,Rust,我有以下防锈代码: fn main() { let mut sum = 0is; for i in (0is..100000000is) { sum = sum + i; } println! ("{}", sum); } 因此,我有49999950000000 但是,当我尝试用Golang和Ruby检查这段代码时,我看到了另一个结果 戈朗版本: package main import "fmt" func main() { var s

我有以下防锈代码:

fn main() {

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

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

戈朗版本:

package main

import "fmt"

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

  fmt.Println(sum)
}
Ruby和Golang的结果都是499999850000001


PS:是的,我知道100000000和9999999之间的区别——这是因为0is..100000000 IS中锈的右边部分包含了杂质。

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

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

4999999950000000

您可以选择使用计算器来验证结果,然后再假设Rust中存在数学错误。提示:不要使用999999999作为数字,但可能是3左右。
func main() {
    var sum = int64(0)
    for i := int64(1); i <= 99999999; i++ {
        sum += i
    }
    fmt.Println(sum)
}

4999999950000000