说实话,喵老师刚刚打开 Numi 的时候基本上惊呆了,毕竟很久没有看到设计如此优雅清爽的软件了,要不是默认打开的 Example 文件上一堆演算,很难把这个漂亮的「记事本」和一个「计算器」软件联系起来:

请输入图片标题

是的,正如你所见,这个计算器就像在记事本里打草稿记流水账,然后优雅的在右边帮你显示一个答案,一切即自然又优美,不得不说非常的赏心悦目「GORGEOUS」。Markdown 一样的简洁语言风格外加清爽的语法着色,每次的演算和账单都可以以文本形式永久保存,如果熟悉 Mathematica 软件的理工科同学,应该对这个简化版的「Notebook」感到并不陌生,甚至在许多自然语言处理的细节上,Numi 相较于 Mathematica 显得更加亲民。

请输入图片标题

其实 Numi 并不是「自然语言文本计算器」的鼻祖,早在 2013 年底 @化学心情 撰写的「能听懂人话的计算器:Soulver」中介绍到的 Soulver 就是一款老牌的文本计算器,此外 Soulver 还有 Mac 版本「这不是你常见的那种计算器,它善解人意:Soulver for Mac」。但与古老而笨重的 Soulver 相比,Numi 这个后起之秀在软件的颜值上可以说紧跟了时代的潮流,淡雅的白色和简约的黑色(夜间模式)配上 Coding Style 的语法着色,很有现代 IDE 或文本编辑器的神韵,而全身上下极少的按钮和交互彻底把界面让给了「计算」这一核心。而且,相较于 Soulver 全各个平台独立 $10+ 的收费,免费的 Numi 显得很温文尔雅,更何况,Numi 还支持非常丰富的扩展。这些,后文我都会详细地介绍到。

首先,作为一款「计算器」,最重要的就是计算功能,我们先来看看 Numi 支持一些什么样的计算。

单位转换

使用关键词 in/into/to/as 来进行单位转换,多个单位进行混合运算的时候 Numi 会自动进行转换。

请输入图片标题

常见货币单位如下(来源 ISO 4217):

货币名称 货币符号 货币名称 货币符号
人民币 RMB / CNY 美元 USD / $
日元 JPY 欧元 EUR
英镑 GBP 德国马克 DEM
瑞士法郎 CHF 法国法郎 FRF
加拿大元 CAD 澳大利亚元 AUD
港币 HKD 奥地利先令 ATS
芬兰马克 FIM 比利时法郎 BEF
爱尔兰镑 IEP 意大利里拉 ITL
卢森堡法郎 LUF 荷兰盾 NLG
葡萄牙埃斯库多 PTE 西班牙比塞塔 ESP
印尼盾 IDR 马来西亚林吉特 MYR
新西兰元 NZD 菲律宾比索 PHP
俄罗斯卢布 SUR 新加坡元 SGD
韩国元 KRW 泰铢 THB

时区转换

可以使用 timenow 关键词来获取本地时间,当想要获取别的时区的时间时,可以在关键词前面加上时区缩写作为前缀或者结合 in 关键词把时区作为后缀。转换的结果会实时与全球时间同步,因此任何时刻运算的结果都会基于当前时刻给出。(截止到发稿为止,此功能尚有小部分故障,不能正确转换时区)

PST time
Beijing time
Time in Madrid
2:30 pm HKT in Berlin

同时,也可以利用 Numi 计算两个时区之间的时差。

数学运算

你可以用运算符号或者关键词来进行数学运算,括号前后可以省略乘号

请输入图片标题

常见的数学运算符号:

运算 示例
加法 +, plus, and, add, with
减法 -, minus, subtract, without
乘法 *, x, times, multiplied by, mul
除法 /, divide, divided by
乘方 ^
按位与 &
按位或 ` `
按位异或 xor
左位移 <<
右位移 >>
取模/求余 mod

数制换算

除了使用十进制数系以外,Numi 还提供了二进制、八进制和十六进制数系,分别使用 0b0o0x 前缀即可。另外,还可以使用 sci 或者 scientific 关键词来把结果显示为科学计数法

请输入图片标题

百分比

除了简单的使用加/减一个百分比之外($10 - 40%),Numi 还提供了额外的高级用法:

运算 示例
百分比值 20% of $10
按百分比增加 5% on $30
按百分比减少 15% off 40RMB
相对百分比 $50 as a % of $100
多出百分比 $70 as a % on $20
少于百分比 $20 as a % off $70
按百分比反推 5% of what is 60RMB
按多出百分比反推 5% on what is 60RMB
按少于百分比反推 5% off what is 60RMB

请输入图片标题

尺度缩写

对于英文用户而言,千 thousand百万 million十亿 billion 是常用的尺度单位,用以描述大数字。因为 m的单位符号,K卡尔文的单位符号,所以 Numi 采用大小写敏感的方式,用 M 来代替 million 的缩写,用 k 来代替 thousand 的缩写。

$2k 
2M RMB

变量和常数

Numi 提供了 = 运算符来声明变量和重复使用。需要注意的是,和大多数编程语言一样,被保护的关键词都是不能用来命名变量的。比方说,K 就不能命名变量,因为它是热力学单位开尔文的单位符号。同样,变量命名也不能以数字开头。

请输入图片标题

然后 Numi 内置了一些常用的数学常数:

常数
Pi 3.1415926536
E 2.7182818285

函数

Numi 还内置了许多常见的函数:

描述 函数 示例
开 N 次根 root root 2 (8)
开平方根 sqrt sqrt 16
开立方根 cbrt cbrt 8
取绝对值 abs abs(-8)
取对数 log log 2 (10)
自然对数 ln ln 3
阶乘 fact fact 5
四舍五入取整 round round 3.45
向上取整 ceil ceil 3.76
向下取整 floor floor 2.56
正弦函数 sin sin 45 degree
余弦函数 cos cos 3.45
正切函数 tan tan 8
反正弦函数 arcsin ascsin 1 in degree
反余弦函数 arccos arccos 0.5 in degree
反正切函数 arctan arctan 30
双曲正弦函数 sinh sinh 3
双曲余弦函数 cosh cosh 9
双曲正切函数 tanh tanh 11

需要注意的是,Numi 的三角函数默认使用的是弧度制,如果想使用角度进行运算,需要使用 degree 关键词。

结果重用

Numi 支持部分的结果重用,比如可以使用 prev 关键词来调用上一行的结果;使用 sum 或者 total 关键词来计算上面所有行(直到空白行为止)的加和:

请输入图片标题

常用单位制的支持

温度:kelvin, celsius, fahrenheit。

长度:meter, mil, points, lines, inch, hand, foot, yard, rod, chain, furlong, mile, cable, nautical mile, league。需要注意 in 由于是单位转换的关键词,所以并不用来代表英寸(inch)。

面积:square 或者 sq 加上所有长度单位均可,另外还有 hectare, are, acre。

体积:cubiccu 或者 cb 加上所有长度单位,同时还提供美国厨房常用的蜜汁单位:pint, quart, gallon, tea spoon, table spoon, cup。

重量:gram, tonne, carat, centner, pound, stone, ounce。

角度:radians 和 degree。

格式

在行首使用 # 符号来确定一个头部,相当于这张稿纸的标题。如果你想注释掉行内的一个部分,则使用双引号 "",而如果要注释掉整行的话,则需要使用双斜杠 //

请输入图片标题

丰富的扩展

如果说 Numi 定义了一种耳目一新的「文本计算」方式的话,那其可以支持 JavaScript 语言的扩展可以说进一步把软件的可用性提升到了更高的高度。作者在 GitHub 上提供了详细的文档教你如何使用 JavaScript 语言来扩展 Numi 的全局变量、单位和函数。

而对于我而言,最方便的一个扩展当属对于 Alfred 的支持。Alfred 的 PowerUser 可以下载并添加 Alfred Workflow 导入这个动作。

Numi 的关键词是 n,比如前面的计算百分比的算式,在 Alfred 中可以这样使用 n 5% off what is 60RMB:

请输入图片标题

回车可以把结果保存到剪贴板,方便在别处使用结果。

有了这个动作之后,Alfred 的计算功能得到了大幅度增强,我使用 Numi 的频率提高了许多。而且得益于我一天呼出 Alfred 上百次的肌肉记忆,让计算变得效率又便捷。

写在后面

总的说来,说 Numi 是 Mac 平台上最「美」的计算器也毫不为过。更何况,Numi 还是一款免费软件,现在可以在 官方网站 直接下载,大家何不下载下来体验一番。