From: Christian Moe <email@example.com> To: firstname.lastname@example.org Subject: Re: org-tables with monetary amounts Date: Thu, 24 Sep 2020 11:17:28 +0200 [thread overview] Message-ID: <email@example.com> (raw) In-Reply-To: <firstname.lastname@example.org> Hi, Parsing numbers followed by currencies is sort of supported already through Calc's operations on units. (Calc is the built-in emacs calculator that powers the spreadsheet function of Org tables). I haven't used this or explored it much, but my impression is that it could be made more useful than it currently is. Here are a couple of things you can do fairly easily. If you're only working with one currency and just want it to show up automatically, the following calculation will give you 59.97 USD in the third column right out of the box, without even requiring you to define it as a unit first. | 50 USD | 8.97 USD | 59.97 USD | #+TBLFM: $3=$1+$2 Adding undefined currencies together will result in an expression like "3 USD + 4 EUR". However, if you define the currencies as units based on exchange rates, you can get conversion as part of arithmetic operations. E.g. in Calc, - put `1' on top of the stack - then do `u d EUR' to define the euro as your unit currency (for example) - then define e.g. US dollars: Today's rate is 1 USD = 0.86 EUR. - hit apostrophe to enter algebraic mode and enter `0.86 EUR' (today's rate: 1 USD = 0.86 EUR) - now do `u d USD' to define the rate Now, with the Calc command to simplify units, you can add dollars to euros and get the result in whichever currency comes first in the algebraic expression | 3 USD | 4 EUR | 6.58 EUR | #+tblfm: $3=usimplify($2+$1) | 3 USD | 4 EUR | 7.6511628 USD | #+tblfm: $3=usimplify($1+$2) I don't use this functionality, so I don't have answers to all the questions you'll now have -- including how to get the desired precision without lopping off the currency unit in the last example! There are ways to enter user-defined units permanently. But exchange rates change, so to use this functionality on a daily basis, you'll want to have some kind of function to pull exchange rates and update the currency unit definitions in the Calc init file. Apart from `usimplify', most Calc functions on units appear (?) to be missing corresponding algebraic versions that you can use in Calc expressions in Org tables, which limits the usefulness. Org tables don't seem to have any specific formula syntax for leveraging Calc unit operations apart from what happens to work out of the box. This might be an area for improvement, though I'm not sure what to ask for. Yours, Christian Daniele Nicolodi writes: > Hello, > > I often use org-tables to work with monetary amounts. It would be very > nice to have a couple of functionalities common in this domain: > > - fixed precision arithmetic, namely derive the precision of the results > from the precision of the arguments (I think that calc can do this), > > - support for parsing numbers followed by currencies, > > - correct alignment for monetary values. > > I had a quick look around, but I haven't found anything that implements > those things. Has anyone some secret code that they would like to share? > > Thank you! > > Cheers, > Dan
next prev parent reply other threads:[~2020-09-24 10:36 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-22 14:57 Daniele Nicolodi 2020-09-22 23:25 ` Nicholas Savage 2020-09-23 9:37 ` Russell Adams 2020-09-23 16:55 ` Eric S Fraga 2020-09-25 11:20 ` Daniele Nicolodi 2020-09-25 11:57 ` Alan Schmitt 2020-09-23 21:26 ` Nick Dokos 2020-09-24 9:17 ` Christian Moe [this message] 2020-09-24 11:47 ` Eric S Fraga 2020-10-09 16:14 ` Daniele Nicolodi 2020-10-12 8:22 ` Christian Moe 2020-10-12 9:43 ` Eric S Fraga 2020-10-13 7:10 ` Derek Feichtinger 2020-10-14 7:38 ` Christian Moe 2020-10-15 20:02 ` Daniele Nicolodi 2020-09-25 9:25 ` Neil Jerram 2020-09-25 11:35 ` Daniele Nicolodi 2020-09-26 18:38 ` Neil Jerram
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: org-tables with monetary amounts' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).