作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将组织模式表中的字段格式设置为货币- 表示以货币符号 ($) 和逗号作为千位分隔符。我一直在使用 $%.2f 来获取例如$1000.00 但如何获得逗号分隔符,例如1,000.00 美元?我有 RTFM,但也许我太笨了,无法获得它。 calc 或 elisp 公式都可以。请参阅下面的示例表:
| Item | Quantity | Price | Ext |
|----------+----------+--------+----------|
| Widget 1 | 10 | 100.00 | 1000.00 |
| Widget 2 | 5 | 50.00 | 250.00 |
| Widget 3 | 1 | 5.00 | 5.00 |
|----------+----------+--------+----------|
| | | Total | $1255.00 |
#+TBLFM: $4=($2*$3);%.2f::@5$4=vsum(@2..@4);$%.2f
最佳答案
我发现没有办法一致地做到这一点,这样你就可以得到带有千位分隔符的数字,并且这些数字会被正确解释以进行进一步的计算。所以这不是一个答案,只是为了记录我迄今为止的研究。
以下示例steals code使用千位分隔符格式化数字。 C-c C-c
在代码上定义函数,或添加到您的初始化文件中。
然后,使用 elisp 计算总计,并使用新的格式化函数进行转换。
#+begin_src elisp :results none
(defun my-thousands-separate (num)
"Formats the (possibly floating point) number with a thousands
separator."
(let* ((nstr (number-to-string num))
(dot-ind (string-match "\\." nstr))
(nstr-no-decimal (if dot-ind
(substring nstr 0 dot-ind)
nstr))
(nrest (if dot-ind
(substring nstr dot-ind)
nil))
(pretty nil)
(cnt 0))
(dolist (c (reverse (append nstr-no-decimal nil)))
(if (and (zerop (% cnt 3)) (> cnt 0))
(setq pretty (cons ?, pretty)))
(setq pretty (cons c pretty))
(setq cnt (1+ cnt)))
(concat pretty nrest)))
#+end_src
| Item | Quantity | Price | Ext |
|----------+----------+------------+--------------|
| Widget 1 | 10 | 1001001.00 | 10010010.00 |
| Widget 2 | 5 | 501001.00 | 2505005.00 |
| Widget 3 | 1 | 51001.00 | 51001.00 |
|----------+----------+------------+--------------|
| | | Total | 12,566,016.0 |
#+TBLFM: $4=($2*$3);%.2f::@5$4='(my-thousands-separate (apply '+ '(@2..@4)));N
请注意,如果您对行总计执行相同的操作,则将无法正确解释总计中以逗号分隔的数字。
正确的方法应该是set the numeric locale让 printf 完成这个任务,但我不知道如何为 emacs 设置它。
关于emacs - 如何在组织模式下将表字段格式设置为货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35661173/
我是一名优秀的程序员,十分优秀!