【问题标题】:Error in org-table-sum org-mode?org-table-sum org-mode 中的错误?
【发布时间】:2016-02-06 22:08:04
【问题描述】:

我刚刚开始使用 Emacs org-mode,我已经对简单的列总和 (org-table-sum) 感到非常困惑。我从

| date |   sum |
|------+-------|
|      |  16.2 |
|      |  6.16 |
|      |  6.16 |
|      |       |

当我点击第二列下方的C-c +(org-table-sum)时,我得到了正确的总和28.52。如果我添加另一行来实现它

| date |   sum |
|------+-------|
|      |  16.2 |
|      |  6.16 |
|      |  6.16 |
|      | 13.11 |
|      |       |

C-c + 给了我41.629999999999995。 ???
如果我将最后一行从 13.11 更改为 13.12C-c +会给我(正确的)41.64
什么鬼?
任何解释表示赞赏!谢谢!

【问题讨论】:

    标签: emacs org-mode


    【解决方案1】:

    大多数十进制数不能用二进制浮点编码(单精度或双精度)精确表示。

    测试 13.11 here,看到转换为双精度后,表示的最接近的数字是13.109999656677246

    此问题与 emacs 无关,但在使用不同基数(二进制而不是十进制)的浮点表示时是一个基本问题。

    使用calc的vsum,结果OK:

    | date |   sum |
    |------+-------|
    |      |  16.2 |
    |      |  6.16 |
    |      |  6.16 |
    |      | 13.11 |
    |------+-------|
    |      | 41.63 |
    #+TBLFM: @6$2=vsum(@I..@II)
    

    这是可行的,因为 calc 以任意精度工作,并且不会以二进制浮点格式对数字进行编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多