dc 命令

用途

提供了一种交互式桌面计算器来完成任意精度的整数计算。

语法

dc [ File]

描述

dc 命令是一个任意精度的算术计算器。 dc 命令从 File 参数或者标准输入得到其输入直到它读到一个文件结束符。 在 dc 命令接收到输入之后,它会求出计算值并将计算值写入到标准输出中。 它按十进制整数计算,但是您可以指定输入和输出的基数,以及小数部分保留的位数。 dc 命令结构如同一个堆栈、逆波兰表示法计算。

bc 命令是 dc 命令的预处理器。 它提供插入式符号以及和 C 语言类似的语法,能够实现程序的功能和控制结构。

子命令

描述
c 清洁堆栈:dc 命令弹出堆栈中的所有的值。
d 复制栈顶值。
f 显示堆栈上的所有值。
i 弹出栈顶值并将其作为进一步输入的基数。
I 将输入基数压入栈顶。
k 弹出栈顶值并将其作为非负比例因子。 位置的恰当数目将会显示在输出中并在乘、除和求幂中保留下来。 如果所有的数值一起修改,比例因子、输入基数、输出基数的交互作用是合理的。
lx x 变量表示的寄存器中的值推送到堆栈上。 不会更改 x 变量表示的寄存器。 所有的寄存器都以为 0 的值启动。
Lx x 变量视为一个堆栈并将其顶部的值弹出到主堆栈中。
o 将栈顶值弹出并且将其作为进一步输出的基数。
O 将输出基数压入栈顶。
p 显示栈顶值。 顶部值不会发生更改。
P 将栈顶作为一个字符串来进行解释,除去并显示它。
q 退出程序。 如果 dc 命令正在运行一个字符串,它将弹出递归级别为 2。
Q 弹出栈顶值并将其作为字符串运行的级别。
sx 弹出栈顶值并将其存放在名称为 x 的寄存器中,其中 x 变量可以是任何字符。
Sx x 变量视为一个堆栈。 它弹出主堆栈的顶部并将该值推送到 x 变量表示的堆栈上。
v 将堆栈顶部的元素用它的平方根来代替。 选项中任何现有的小数部分将会计算在内,但是相反,比例因子将会被忽略。
x 将堆栈顶部的元素视为一个字符串并将其作为 dc 命令的一个字符串来运行。
X 将堆栈顶部的数字用它的比例因子来代替。
z 将堆栈中的元素数压入到堆栈中。
Z 将堆栈顶部的数字用此数字的位数来代替。
编号 将指定的值压入堆栈。 数字 是数字 0 到 9 的未中断字符串。 要指定负数,请在其前面加上 _ (下划线)。 数字可包含小数点。
+ - / * % ^ 对堆栈上的最上面两个值进行加 (+)、减 (-)、乘 (*)、除 (/)、求余 (%) 或者取幂 (^) 运算。 dc 命令会将前两个条目从堆栈中弹出,并将结果推送到堆栈中的位置。 dc 命令忽略指数的小数部分。
[字符串] 将用方括号里的 String 参数放到堆栈的顶部。
[= | > | <] x 将堆栈顶部的两个元素弹出并进行比较。 计算 x 变量表示的寄存器的值,如同它遵循规定的关系一样。
! 将其作为一个操作系统命令来解释该行中剩下的部分。
? 获取并且运行一个输入行。
;: bc 命令将这些字符用于数组操作。

示例

  1. 要将 dc 命令用作计算器,请输入以下命令:
    You:    1 4 / p
    System: 0
    You:    1 k   [ Keep 1 decimal place ]s.
            1 4 / p
    System: 0.2
    You:    3 k   [ Keep 3 decimal places ]s.
            1 4 / p
    System: 0.250
    You:    16 63 5 / + p
    System: 28.600
    You:    16 63 5 + / p
    System: 0.235
    可在 dc 命令中使用注释,如示例中所示。 注释括在方括号中,并且可后跟 s. 字符。 [Comment]s. 格式中的注释将被 dc 命令忽略。 仅那些括在方括号中的注释存储在堆栈顶部。

    直接从键盘输入 dc 命令表达式时,按 Ctrl-D 以结束 bc 命令会话并返回到 shell 命令行。

  2. 要装入并运行 dc 程序文件,请输入以下命令:
    You:    dc prog.dc
            5 lf x p [ 5 factorial ]s.
    System: 120
    You:    10 lf x p [ 10 factorial ]s.
    System: 3628800
    此条目解释保存在 prog.c 程序文件中的 dc 程序,然后从工作站键盘读取。 该lf x对存储在寄存器中的函数求值f,可以在 prog.c 程序文件中定义为:
    [ f: compute the factorial of n ]s.
    [ (n = the top of the stack) ]s.
    [ If 1>n do b; If 1<n do r ]s.
     [d 1 >b d 1 <r] sf
    [ Return f(n) = 1 ]s.
     [d - 1 +] sb
    [ Return f(n) = n * f(n-1) ]s.
     [d 1 - lf x *] sr
    您可以使用任何文本编辑器或 bc 命令的 -c (编译) 标志来创建 dc 程序文件。 如果是直接从键盘输入 dc 命令,按下 Ctrl-D 可以结束 bc 命令会话并返回到 shell 命令行。

文件

描述
/usr/bin/dc 包含 dc 命令。