Categories

你用什么计算器?

abacus我自己的口算能力非常弱,不过我相信就算是口算能力比较强的人偶尔也会需要借用一下工具吧。计算机号称有通用计算能力,像我们这样大部分时间都在电脑前的人通常都会优先考虑电脑上的计算工具吧。其实这样的工具通常都是偶尔拿来用用,甚至是能找到什么就用什么了,并不会去太在意它们,不过昨天我看到了一篇比较有趣的 blog ,觉得果真是大千世界,无奇不有,大家平时用的计算工具也真是千奇百怪。

然后我就开始回想自己都用些什么工具了。最开始自然是 Windows 自带的那个计算器了。不过那个东西的确是比较弱,明明是电脑软件,却非要去模拟计算器的界面和操作方式,不过我觉得它那个进制转换的功能确实不错。后来就乱七八糟地用一些,包括从网上下载的有各种杂七杂八的功能(比如单位转换)功能的所谓“超级计算器”之类的,也有直接在 Google 搜索框里计算的。

上大学学了 C 语言,学高等代数的时候要算多项式、矩阵之类的,干脆自己写程序来算,虽然比较费力,不过也算开心。后来用上了 Emacs ,虽然听说里面那个计算器无比强大,但是尝试过好几次都没有弄明白到底怎么用的。倒是 Linux 下的那个 bc 让我非常喜欢,任意精度的计算器,可以使用函数、变量,并且是命令行工具,小巧方便,当然,也可以进行进制转换,只要设置 ibaseobase 就可以了。不过这里有一个比较整人的地方:你最好先设置 obase 再设置 ibase ,否则,例如,你先设置了 ibase 为 16 ,再输入命令 obase = 10,你本意是想让它十进制输出,但是实际上这里 ibase 已经设置成 16 了,你输入的 10 已经是十六进制的了。 ^_^

一直都很喜欢 bc ,不过现在如果电脑上有装 Ruby 的话,我肯定会优先选择 irb 的。别的语言特性不说,但是如果作为方便的计算器的话,Ruby 绝对比 Python 要好用。比如进制转换(四进制到七进制):

'123'.to_i(4).to_s(7) # => 36

我也不清楚为啥我老是要做进制转换,但是印象中确实是这样。还有一个比较常用的东西是随机排序,比如这里有这些活,怎么分配到每个人身上呢?通常就是抽签,其实就是每个人给一个编号随机排序一下了:

(1..5).sort_by { rand } # => [5, 3, 2, 4, 1]

当然这已经不能严格地算是一个计算器的功能了。 ^_^

不过我确实是昨天才在这篇 MSDN blog 上得知 cmd.exe 的 set 命令有一个 /A 选项可以用来完成“32 位带符号整数运算”,后面的评论有人贴出了这样一个“bug”:

C:\>set /a 50000*50000
-1794967296

并抬出了 Python 。不过这样地挑刺实在是没有技术含量,因为人家已经说明了是“32 位带符号整数运算”了。相比之下,另一位老兄就有趣得多,他用 cmd.exe 的这个功能写了一个计算 $\pi$ 的批处理,代码接近 200 行。这才是 geek 啊!

那么,你又是用什么东西来做计算的呢?不会随身挂一个金算盘吧? 😀

13 comments to 你用什么计算器?