-4
я следующий код в Русте:Rust математическая ошибка
fn main() {
let mut sum = 0is;
for i in (0is..100000000is) {
sum = sum + i;
}
println! ("{}", sum);
}
в результате, у меня есть 4999999950000000
Но, когда я пытаюсь проверить этот код с Golang и Руби - я вижу другой результат
версия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. (Подсказка: не используйте 999999999 как число, но возможно 3 или около того). – topskip