手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

dc(1)

名称

dc - 桌面计算器

用法概要

/usr/bin/dc [filename]
/usr/xpg6/bin/dc [filename]

描述

dc 是一个任意精度算术软件包。通常,该软件包以十进制整数运行,但可以指定输入基数、输出基数以及要保留的小数位数。dc 的整体结构是一个堆栈(逆波兰表示法)计算器。如果提供了参数,则将从该文件取输入值直到文件结尾,然后再从标准输入取值。

bcdc 的预处理器,提供中缀表示法和类似于 C 语言的语法,可以实现函数。bc 还提供了合理的程序控制结构。请参见 bc(1)

用法

/usr/bin/dc, /usr/xpg6/bin/dc

/usr/bin/dc/usr/xpg6/bin/dc 下可识别以下构造:

number

该数字值被推送到堆栈上。一个数字是一个 0 至 9 组成的完整字符串。数字前面可以加一个下划线 (_) 以输入负数。数字可以包含小数点。

sx

将堆栈顶部弹出并存储到寄存器 x 中,其中 x 可以是任何字符。如果 s 大写,则将 x 视为一个堆栈,并将值推送到该堆栈上。

lx

寄存器 x 中的值被推送到该堆栈上。不会更改寄存器 x。所有寄存器开始时的值都为零。如果 l 大写,则将 x 视为一个堆栈,其顶部值会弹出到主堆栈上。

d

复制堆栈上的顶部值。

p

输出堆栈上的顶部值。顶部值保持不变。

P

将堆栈顶部解释为一个 ASCII 字符串,将其删除并输出。

f

输出堆栈上的所有值。

q

退出程序。如果在执行字符串,则递归层按两层弹出。

Q

退出程序。堆栈上的顶部值弹出,并且字符串执行层按该值弹出。

x

将堆栈的顶部元素视为一个字符串,并将其作为 dc 命令的一个字符串执行。

X

将堆栈顶部的数字替换为其比例因子。

[ ... ]

将加方括号的 ASCII 字符串放到堆栈顶部。

<x >x =x

顶部的两个堆栈元素会弹出并进行比较。如果寄存器 x 符合陈述的关系,则对其求值。

v

将堆栈的顶部元素替换为其平方根。将考虑任何现有的参数小数部分,但会忽略比例因子。

!

将行的其余部分解释为 shell 命令。

c

弹出堆栈上的所有值。

i

弹出堆栈上的顶部值并将其用作进一步输入的数字基数。

I

将输入基数推送到堆栈顶部。

o

弹出堆栈上的顶部值并将其用作进一步输出的数字基数。

O

将输出基数推送到堆栈顶部。

k

弹出堆栈顶部,并将该值用作非负比例因子:在输出中输出相应的位数,并在乘、除和求幂运算中保留该位数。如果比例因子、输入基数和输出基数同时改变,则它们之间的交互是合理的。

K

将当前比例因子推送到堆栈顶部。

z

将堆栈层推送到堆栈上。

Z

将堆栈顶部的数字替换为其长度。

?

从输入源(通常为终端)取得一行输入并执行。

Y

显示 dc 调试信息。

; :

bc(1) 用于数组运算。

/usr/bin/dc

/usr/bin/dc 下可识别以下构造,使用结果中的比例因子。

+ − / * % ^

对堆栈顶部的两个值执行加 (+)、减 ()、乘 (*)、除 (/)、求余 (%) 或求幂 (^) 运算。两个输入项从堆栈上弹出;将结果推送到堆栈上它们的位置。忽略任何指数的小数部分。

/usr/xpg6/bin/dc

/usr/xpg6/bin/dc 上可识别以下构造。除的结果强制使用比例 20。

+ − / * % ^

对堆栈顶部的两个值执行加 (+)、减 ()、乘 (*)、除 (/)、求余 (%) 或求幂 (^) 运算。两个输入项从堆栈上弹出。将结果推送到堆栈上它们的位置。忽略任何指数的小数部分。

确保除法运算前的比例是结果的比例。

示例

示例 1 输出 n! 的前十个值

以下示例输出 n! 的前十个值:

[la1+dsa*pla10>y]sy
0sa1
lyx

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

bc(1)attributes(5)

诊断

x is unimplemented

x 是一个八进制数字。

out of space

可用列表已耗尽(数字太多)。

out of stack space

堆栈上的推送太多(堆栈溢出)。

empty stack

堆栈上的弹出太多(堆栈下溢)。

nesting depth

嵌套执行层太多。

divide by 0

除数为零。

sqrt of neg number

未定义负数的平方根(没有虚数)。

exp not an integer

dc 仅处理整数求幂。

exp too big

允许的最大指数为 999。

input base is too large

输入基数 x:2<= x <= 16。

input base is too small

输入基数 x:2<= x <= 16。

output base is too large

输出基数必须小于或等于 BC_BASE_MAX

invalid scale factor

比例因子不能小于 1。

scale factor is too large

比例因子不能大于 BC_SCALE_MAX

symbol table overflow

指定的变量太多。

invalid index

指数不能小于 1。

index is too large

指数不能大于 BC_DIM_MAX