跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 为什么计算顺序会影响浮点数求和的精度?
未分類
22 4 月 2020

为什么计算顺序会影响浮点数求和的精度?

为什么计算顺序会影响浮点数求和的精度?

資深大佬 : Qzier 70

sum = 0 for i in range(1, 501):     sum += 1 / i print(sum)  sum = 0 for i in range(500, 0, -1):     sum += 1 / i print(sum) 

两种结果的精度为何不同?

6.79282342999052 6.7928234299905235 

大佬有話說 (6)

  • 資深大佬 : yexiaoxing

    sum 本身也是个浮点数

  • 資深大佬 : msg7086

    浮点计算每次都可能产生误差,计算顺序当然会影响结果了。

  • 資深大佬 : nalzok

    考虑这个更简单的例子

    >>> (1 + 0.0000000000000001) + 0.0000000000000001
    1.0
    >>> 1 + (0.0000000000000001 + 0.0000000000000001)
    1.0000000000000002

    至于为什么呢,因为

    >>> 1 + 0.0000000000000001
    1.0
    >>> 1 + 0.0000000000000002
    1.0000000000000002

    简单来说,0.0000000000000001 加到 1 上之后就因为精度有限的关系被 discard 掉了;但是如果你先把两个 0.0000000000000001 合成一个 0.0000000000000002 再加到 1 上面,那么这个数字就会因为足够大而不会被 discard

  • 資深大佬 : Mutoo

    误差主要来自无法用二进制精确表达的十进制。不同的累家顺序会导致这样的十进制出现的情况不同。

  • 資深大佬 : hobochen

    @Mutoo 误差不是浮点数本身精度有上限吗?和进制转换没关系吧?

  • 資深大佬 : Mutoo

    @hobochen 涉及到十进制小数,关系就大了。经典的 0.1+0.2 != 0.3

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具