Emacs 组织表总和组织模式中出错?
我刚刚开始使用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 | |
| 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可以以任意精度工作,并且不会以二进制浮点格式对数字进行编码