Emacs 组织表总和组织模式中出错?

Emacs 组织表总和组织模式中出错?,emacs,org-mode,Emacs,Org Mode,我刚刚开始使用Emacs组织模式,我已经对简单的列和(组织表和)感到非常困惑。我从 | date | sum | |------+-------| | | 16.2 | | | 6.16 | | | 6.16 | | | | 当我点击第二列下方的C-C+(组织表总和)时,我得到了正确的总和28.52。如果我再加上一行 | date | sum | |------+-------| | | 16.2 | |

我刚刚开始使用Emacs组织模式,我已经对简单的列和(组织表和)感到非常困惑。我从

| date |   sum |
|------+-------|
|      |  16.2 |
|      |  6.16 |
|      |  6.16 |
|      |       |
当我点击第二列下方的
C-C+
(组织表总和)时,我得到了正确的总和
28.52
。如果我再加上一行

| date |   sum |
|------+-------|
|      |  16.2 |
|      |  6.16 |
|      |  6.16 |
|      | 13.11 |
|      |       |
C-C+
给了我
41.6299999995

如果我将最后一行从
13.11
更改为
13.12
C-C+
将给我(正确的)
41.64

WTF?

感谢您的解释!谢谢

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

测试13.11,以查看转换为双精度后,表示的最近数字为
13.109999656677246

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

使用calc的
vsum
,结果正常:

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

这是因为calc使用任意精度,不会以二进制浮点格式对数字进行编码。

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

测试13.11,以查看转换为双精度后,表示的最近数字为
13.109999656677246

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

使用calc的
vsum
,结果正常:

| date |   sum |
|------+-------|
|      |  16.2 |
|      |  6.16 |
|      |  6.16 |
|      | 13.11 |
|------+-------|
|      | 41.63 |
#+TBLFM: @6$2=vsum(@I..@II)
这是因为calc可以以任意精度工作,并且不会以二进制浮点格式对数字进行编码