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