Jump to content

RPN calculator

Recommended Posts

A simple RPN calculator that works like the built-in calculator.  Requires spaces as delimiters between elements in the expression.  Built using deanishe's Alfred python library.




19 2.14 + 4.5 2 4.3 / - *


produces an Alfred result:



Action this item to copy this number to the clipboard


There is a single keyword:




Download link: 


https://www.dropbox.com/s/9ay1z2mubifcun6/RPN Calculator.alfredworkflow?dl=0


2018-07-10: updated with working link

2020-07-26 updated with latest version of deanishe's Alfred python library.

Edited by dfay
Link to comment
  • 4 years later...
  • 2 years later...
  • 1 month later...

@dfay Thank you, thank you! I am in your debt. I literally upgraded Alfred just for this.  


When I'm on Slack and need to complete a sentence like "we frobnicated 6,122,849 doodads between 8:28 and 12:49, a rate of one million every..."  – which seems to be a lot of my life the past few weeks – there is nothing so useful as a good RPN calculator, and none so close to hand and fast to use as yours. Thank you.

Link to comment
  • 8 months later...

@dfay, thanks for this workflow. FYI workflow needs "0" in front of decimal for it to work - for example "RPN 100 .1 *" would end up with wrong result, it needs "RPN 100 0.1 *". Is it by design or potential bug?

Link to comment

I'd like to say it's by design but it's actually an artifact of the crazy regular expression in rpn.py line 42:


ops = map(lambda y: y.replace(' ',''), re.split('\s|(?<!\d)[,.]|[,.](?!\d)',query))



Link to comment

Ok. Just have to be careful when entering decimal numbers, habit of keying without leading "0". Only discovered this "issue" when result came out too big. It interprets ".10" as "10" 😲

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...