首页 > 其他, 初级 > Emacs下的计算器 - calc

Emacs下的计算器 - calc

2010年5月5日 ahei 发表评论 阅读评论

作者: yupeng

1 概述

“Calc” 是 emacs 自带的一个计算器,提供了许多方便的数值计算功能,可以让你在不离开 emacs 的情况下进行计算。但 calc 与 gnome 环境下的 gcalctool 或者 windows 自带的计算器不同,它不是一个掌上计算器的模拟程序,操作不像上述两个计算器那样直观,需要记忆一些指令,相应的,提供的功能也更加强大了一些。

2 打开计算器

‘C-x * c’:打开计算器。
‘C-x * t’:打开计算器,同时也打开 calc 的在线帮助。

3 基本运算

3.1 逆波兰表达式

calc 按照逆波兰表达式的方式进行计算。比如,你要计算2+3的结果,要按照如下顺序在 calc 的 buffer 中输入:
2 <RET> 3 <RET> + (<RET> 表示回车)
假设,你当前输入了:
1 <RET> 2 <RET> 3 <RET>
然后,输入加号 ‘+’,那么 calc 将会计算 2+3 的结果, 并保持数字1不变,calc 的 buffer 中会剩下 1,5两个数字。此时,再次输入’+', calc 会计算 1+5 的结果,此时 calc 的 buffer 中只剩下一个数字 ‘6’。
很多时候,可以省略一个<RET>,比如计算2+3时,你可以省略第二个<RET>,只输入:
2 <RET> 3 +

3.2 基本运算符号

‘+’:加号
‘-’:减号
‘*’:乘号
‘/’:除号
‘%’:取余,比如6%5=1, 30%4=2
‘&’:取倒数
‘^’:幂运算,当然也可以用做开方运算,比如4^0.5=2

3.3 代数运算

当我们只是想简单的对一系列数字进行代数运算时,使用逆波兰表达式不是很直观,因此, calc 提供了一个更加直接的指令:
‘ (就是分号旁边的那个按键)
比如,在 calc 中按“’”,然后输入算式:
(3^2 + 4^2) ^ 0.5
calc 会直接给出答案:5。

4 数制转换

在 calc 中使用指令d2,d8,d0,d6可以在2进制,8进制,10进制,16进制之间切换(d2 就是先按’d',再按’2′,其他也以此类推)。calc 默认是使用10进制进行计算。当进入2进制,8进制,16进制模式时,mode line上会给出’Bin’,’Otc’,’Hex’字样的提示,默认的10进制模式是不会有任何提示的。当进入任何一种进制模式的时候,输入的数字都是以10进制模式输入的。比如在16进制模式下,输入:
10 <RET>
此时,calc中显示的数字是’A',而不是16进制的10。
如果你想按照当前的进制输入数字,需要在键入数字前按‘#’,比如,在16进制模式下输入:
#10 <RET>
此时,calc中显示的数字就是16进制的10,而不是A。

5 三角运算

5.1 逆波兰表达式下的运算符

S:正弦
C:余弦
T:正切
比如,想计算30度角的正弦值,输入:
30 <RET> S(可以省略 <RET>)
calc 会给出答案:0.5

5.2 在代数模式下的运算符

sin:正弦
cos:余弦
tan:正切
比如,输入
’sin(30)2+cos(30)2
我这里的calc给出答案:
0.999999999999

5.3 弧度制和角度制的转换

m r:进入弧度制(mode line 上显示 Rad)
m d:进入角度制(mode line 上显示 Deg)

6 向量运算与矩阵运算

输入向量与矩阵的方法很简单。
比如,输入一个三维向量:
[ 1 <RET> 2 <RET> 3 <RET> ]
此时,calc 中就会显示:
[1, 2, 3]
(实际上最后一个<RET>可以省略)
输入矩阵的方法与向量类似,比如,我们输入一个2×2的矩阵:
[ [ 1 <RET> 2 <RET> ] [ 3 <RET> 4 <RET> ] ]
此时, calc 中会显示:
[ [ 1, 2 ]
[ 3, 4 ] ]
calc中专门的矩阵运算法则我没有研究过,我自己平常会用到的,也就是矩阵求逆。只需输入一个矩阵,然后按“&”就可以了(还记得“&”么?如果对数字使用“&”运算,就是求倒数,对于矩阵,就是求逆)。

7 复制,删除,撤销

输入一个数字(或矩阵),然后按<RET>,可以复制该数字(或矩阵)到整个运算堆栈的最顶部。
Backspace 或 Del 可以删除运算堆栈最顶部的数字(或矩阵)。
用U或者C-_或者M-x calc-undo可以在计算器中执行撤销操作

8 定义函数

在 calc 中你可以定义自己的函数。定义函数的指令是:
Z F
比如,先输入一个公式:
‘a + 2b
然后键入:
Z F m
再回答几个 minibuffer 中提出的问题,就定义了一个以 ‘z m’为快捷键的函数了。
此时,再输入两个数字:
1 <RET> 2 <RET>
然后按:
z m
就会按照公式计算出1+2*2的结果,也就是5。

使用指令:
Z P
可以把函数保存到文件,这样在以后的 emacs 会话中都可以使用这个函数。
比如,输入:
Z P m
可以把刚才定义的函数’z m’保存到由变量 calc-settings-file 指定的文件中。以后每次进入 calc 时,保存在这只文件中的函数也会被自动加载。calc-settings-file 的默认值是”~/.calc.el”,我通常喜欢把它挪到.emacs.d 里面:

(setq calc-settings-file "~/.emacs.d/.calc.el")

分享家:Addthis中国
GD Star Rating
loading...
Emacs下的计算器 - calc, 8.6 out of 10 based on 9 ratings 标签:calc, Emacs, windows, 配色, 配色

相关日志

分类: 其他, 初级
  1. 2017年6月8日15:20 | #1

    Please let me know if you’re looking for a writer for
    your blog. You have some really good articles and I feel
    I would be a good asset. If you ever want to take some of
    the load off, I’d really like to write some articles
    for your blog in exchange for a link back to mine.
    Please shoot me an e-mail if interested. Kudos!

    [回复]

  2. 2017年6月19日16:35 | #2

    It’s truly very difficult in this busy life to listen news
    on TV, so I just use internet for that reason, and get
    the most recent information.

    [回复]

  3. 2017年9月2日22:39 | #3

    Mapping Workplace Attributes to OneLogin Attributes.

    [回复]

  4. 2017年9月4日09:17 | #4

    I read this piece of writing completely on the topic of the
    difference of hottest and previous technologies, it’s awesome article.

    [回复]

  5. 2017年9月5日02:30 | #5

    Hi there to every , as I am actually keen of reading this web site’s post to be updated regularly.
    It includes nice stuff.

    [回复]

  6. 2017年9月29日06:42 | #6

    Thanks to Dr. Hawass’ talks and professional observations,
    that he will share with us next to the world’s greatest monuments, you will experience Egypt
    like no one else.

    [回复]

  7. 2017年10月5日14:13 | #7

    Breakfast is often served at inns between 07:00 to 10.00
    every morning.

    [回复]

  8. 2017年10月14日01:04 | #8

    E book Now.

    [回复]

评论分页
1 2 41266
  1. 2010年5月5日03:02 | #1
  2. 2010年8月2日04:42 | #2
  3. 2011年12月21日23:55 | #3
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!: