dc

任意精度计算器

说明

dc 是一款逆波兰表达式计算器,支持无限制精度的算术运算。它还允许您定义和调用宏。通常,dc从标准输入读取,也可以通过参数传入文件来求值。

语法

1dc [选项] [文件...]

选项

1-e, --expression=EXPR    # 评估表达式
2-f, --file=FILE          # 评估文件内容
3-h, --help               # 显示此帮助并退出
4-V, --version            # 输出版本信息并退出
 1p 打印堆栈顶部的值并以换行符结束语句。
 2n 打印堆栈顶部的值并以空语句结束行。
 3f 打印整个堆栈,不做任何更改。
 4P 从栈顶弹出值。
 5c 清除堆栈。
 6d 复制顶部值并将其推入主堆栈。
 7r 反转堆栈中顶部两个元素的顺序。
 8Z 从堆栈中弹出值,计算其中的位数并压入该数字。
 9X 从堆栈中弹出值,计算其中的小数位数并压入该数字。
10z 将堆栈长度推入堆栈。
11i 从堆栈中弹出值并将其用作输入基数。
12o 从堆栈中弹出值并将其用作输出基数。
13k 从堆栈中弹出值并使用它来设置精度。
14I 将输入基数的值推入堆栈。
15O 将输出基数的值压入堆栈
16K 将精度值压入堆栈。

示例

下面是 dc 命令在命令行完成的计算 10 * 10 得出结果 100,并推出的过程

1$ dc        
2
310          # 1. 输入数字10
410          # 2. 输入数字10
5*           # 3. 输入运算类型*表示乘
6p           # 4. 输入p得到计算结果
7100
8q           # 5. 输入 q 退出 dc

示例显示在命令行结果 509

1$ dc --expression="50 10 * 9 + p"
2509

支持的运算

+ 从堆栈中弹出两个值,将它们相加,然后压栈结果。

- 弹出两个值,从弹出的第二个值中减去弹出的第一个值,并压栈结果。

* 弹出两个值,将它们相乘,然后压栈结果。结果中分数位数取决于当前精度值和两个参数中的分数位数。

/ 弹出两个值,将弹出的第二个值与弹出的第一个值相除,然后推送结果。分数位数由精度值指定。

% 弹出两个值,计算/命令将执行的除法的剩余部分,并推送该值。计算的值与序列 Sd dld/Ld*- 计算的值相同。

~ 弹出两个值,将弹出的第二个值与弹出的第一个值相除。首先推送商,然后推送余数。除法中使用的小数位数由精度值指定。

(序列 SdSn lnld/lnld% 也可以完成此功能,但错误检查略有不同。)

^ 使用弹出的第一个值作为指数,第二个值作为基数,弹出两个值并进行幂运算。忽略指数的分数部分。

| 弹出三个值并计算模幂。 弹出的第一个值用作约简模数; 这个值必须是一个非零数字,并且应该是一个整数。 弹出的第二个用作指数; 该值必须是非负数,并且该指数的任何小数部分都将被忽略。 弹出的第三个值是取幂的基数,它应该是一个整数。 对于小整数,这类似于序列 Sm^Lm%,但与 ^ 不同的是,此命令适用于任意大的指数。

v 弹出一个值,计算其平方根,然后压栈它。精度值的最大值和参数的精度用于确定结果中的小数位数。 来源:https://github.com/jaywcjlove/linux-command

最后修改于: Wednesday, January 31, 2024
欢迎关注微信公众号,留言交流。

相关文章:

翻译: