org-table-sum 组织模式出错?

Error in org-table-sum org-mode?

我刚刚开始使用 Emacs 组织模式,我已经对简单的列总和 (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.
WTF?
任何解释表示赞赏!谢谢!

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

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

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

使用calc的vsum,结果OK:

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

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