2015-11-05 20 views
0

我剛剛開始使用Emacs org-mode,我已經對簡單的列總和(org-table-sum)感到困惑。我開始與org-table-sum org-mode中的錯誤?

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

當我第二欄下方打C-c +(ORG-表之和)我得到正確的總和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?
任何解釋讚賞!謝謝!

回答

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(@[email protected]) 

這工作,因爲鈣可與任意精度和二進制浮點格式不編碼的數字。