org-table-sum org-mode出错?

时间:2015-11-05 21:39:55

标签: emacs org-mode

我刚刚开始使用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.12,则C-c +会给我(正确的)41.64
WTF?
任何解释赞赏!谢谢!

1 个答案:

答案 0 :(得分:4)

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

测试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以任意精度工作,不会以二进制浮点格式对数字进行编码。