dongzhang7382 2015-01-19 10:01
浏览 59
已采纳

Rust数学错误

I have following code in Rust:

fn main() {

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

as a result, I have 4999999950000000

But, when I try to check this code with Golang and Ruby - I see another result

golang version:

package main

import "fmt"

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

  fmt.Println(sum)
}

Ruby version:

@sum = 0
(1...99999999).each do |i|
  @sum += i
end

puts @sum

and the result for both Ruby and Golang is 4999999850000001

PS: yep, I know about difference between 100000000 and 99999999 - it's because of inclusion right part in Rust in 0is..100000000is

  • 写回答

1条回答 默认 最新

  • dongsong73032 2015-01-19 10:06
    关注

    You are not summing the last element (99999999) in Go and Ruby:

    func main() {
        var sum = int64(0)
        for i := int64(1); i <= 99999999; i++ {
            sum += i
        }
        fmt.Println(sum)
    }
    
    4999999950000000
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 python爬取b站弹幕可视化词云图问题
  • ¥15 懂Matlab的人,可以帮我看看第四题和第五题应该怎么才能运行出来,或者可以提供一点相关的思路
  • ¥15 cv2.fisheye.stereoCalibrate报错
  • ¥20 求自动化运维语料数据集
  • ¥30 广告检测流量作弊案例 IDEA运行代码报错 连接不上metastore 检测了环境配置没有问题 请求远程解决加VX问细节问题 不加的不回复
  • ¥15 matlab图像融合代码被嫌弃太简单,求改进。第一步改成直接读取三张图片,不读取文件夹
  • ¥20 微处理器原理与应用(私有偿)
  • ¥50 8051单片机关于ADC0809的应用
  • ¥15 有没有能拿来练练手写完发给我
  • ¥15 禁止修改windows系统时间