Rust 数学错误
Rust math error
我在 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
我在 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