巧用Emacs和bc进行大数计算——一个技巧

bc是GNU的一个小工具 优势是可以进行任意精度的计算 也就是俗称的「大数计算」 效率不是很高 但精度高 还可以使用类似C语言来进行编程 我很喜欢用

但一直以来都是在命令行里或者Emacs的shell-mode里用 因为没有bc-mode嘛 自己也懒得写一个 总觉得用起来不舒服

今天突然想到 可以用Emacs的M-|(shell-command-on-region)来提高效率

立即试了一下 发现不行:我打开了一个buffer 输入1+2 选中后按M-| minibuffer里显示

(standard_in) 1: parse error

这是什么鬼🙍

谷歌了一下 没找到了什么直接的资料 但隐约觉得是不是因为没有换行 试了一下 成功了

比如说下面的代码 光标停在下一行 M-| 结果出现辣 如果我想直接插入结果 用C-u M-|

1
2
3
4
5
6
sum = 1;
for(i = 54; i >= 1; i--)
{
sum *= i;
}
sum

23084369733924138047209274268302758108327856457180794113228800000000
0000

bc不好的一个地方就是输入自动换行了 不过其他都好好