#计算器 #RPN #实用工具 #命令行界面

应用程序 rpni

基本的命令行RPN计算器

2个版本

0.1.1 2022年2月13日
0.1.0 2022年2月13日

#1572 in 数学

AGPL-3.0-or-later

22KB
498

RPN计算器

License Crates.io Version Dependencies

一个基本的命令行RPN计算器。它与DC相似,但有一些不同之处。

数字以 f64 类型存储,而不是任意精度的整数。这更简单,但有时不够精确。

命令列表

  • v:打印栈顶的值而不弹出它。
  • V:打印整个栈,包括索引。索引 0 代表栈顶。
  • p:与 v 相同,但在打印之前从栈中弹出值。
  • +-*/:正如你所期望的。第一个操作数首先弹出。
  • %:弹出 a,然后弹出 b,然后弹出 a % b
  • ":结合了 /%。与 % 具有相同的参数顺序,但先弹出商,然后弹出余数,即模数。
  • ^:弹出 a,然后弹出 b,然后弹出 a ^ b
  • ~:弹出 a,然后弹出 -a。换句话说,就是取栈顶值的相反数。
  • c:清除栈。
  • d:弹出 a,然后两次弹出 a
  • r:交换栈顶的两个值。
  • R:弹出 N,然后旋转栈底 abs(N) 个值。负号 N 决定了旋转方向:负号表示右旋转,正号表示左旋转。最好的理解方法可能就是亲自尝试。
  • i: 弹出 a,然后将输入基数设置为 a。输入基数决定了数字的解析方式。在小于或等于10的基数中,所有数字都可以正常输入。在大于10的基数中,数字必须以一个数字(0到9)开头,但可以在数字前加上 0 并得到相同的结果。例如,在16进制中,尝试将 c2 作为数字输入会运行 c 命令,然后输入数字 2,所以你应该输入 0c2
  • I: 推入输入基数。
  • (空格)、\t(制表符)、0(ASCII NUL)、\n(换行符):无操作,但可以分割数字和其他操作,允许同一行有多个空格、制表符和NUL(例如,123 456 分别推入 123456)。
  • z: 推入栈当前长度(不包括即将推入的值)。
  • ?<命令>:获取命令的帮助信息。

寄存器命令

寄存器按其UTF-8码点索引,可以是任何单个字符。它们是自己的完全独立的栈。

  • s<reg>:从全局栈中弹出值并将其推入指定的寄存器。
  • l<reg>:从指定的寄存器中弹出值并将其推入全局栈。
  • S<reg>:在不弹出栈顶值的情况下查看栈顶值,并将其推入指定的寄存器。
  • L<reg>:从指定的寄存器中查看值并将其推入全局栈。
  • &<reg><操作>:在指定的寄存器内执行 操作。不允许嵌套寄存器操作,如 &asb

使用示例

> 2 2+v
4
> c 2~V
0: -2
> 16i c2 V
0: 2
> c 0c2 V
0: 194
> 0a i c 123 sl V
> &lV
0: 123
> 456 sl &l+ Ll v
579
> c 1 2 3 4 V
3: 1
2: 2
1: 3
0: 4
> 3RV
3: 1
2: 3
1: 4
0: 2
> 3~RV
3: 1
2: 2
1: 3
0: 4
> c 0 0 0 0 zp
4
> c 1 0 / p
inf

依赖关系

~220KB