民科吧 关注:371,063贴子:4,893,315
  • 4回复贴,共1

其实三江并不是完全错的,编程做累加的程序确实有问题

取消只看楼主收藏回复

我看不少人直接编程做累加来打脸三江,三江狡辩说计算机在做1/n的运算的时候是把精确的有理数变成了计算机无法准确表达的无理数而导致误差的引入。这句话说的确实没错。不少吧友缺乏对计算机浮点数的认识,这点上三江似乎更准确一些


IP属地:加拿大1楼2019-05-20 01:03回复
    虽然三江没有认识到这点误差不足以对结果产生影响,但是他提到的误差确实是存在的


    IP属地:加拿大2楼2019-05-20 01:10
    回复
      下面给出一个无误差的程序,每一步的累加都采用有理数运算,不用浮点数。由于有理数在计算机内部是通过分子和分母来表示的,所以有理数是可以被计算机精确表达的。有理数运算的算法和人手算的算法一致。
      from fractions import Fraction
      s = Fraction(1, 1)
      for i in range(2, 200):
      s += Fraction(1, i**3)
      print(s)
      print("{}".format(float(s)))


      IP属地:加拿大3楼2019-05-20 01:13
      收起回复
        @三江方士
        还有什么想说的嘛。不承认累加就滚吧,这个问题的定义就是累加,不承认累加等于不承认这个问题,那你还snmb呢


        IP属地:加拿大6楼2019-05-20 01:20
        收起回复
          对了10万块钱什么时候到账,等着你的钱吃饭呢,不然饿死了


          IP属地:加拿大7楼2019-05-20 01:23
          回复