6 个版本 (1 个稳定版)
1.0.0 | 2021年7月14日 |
---|---|
0.8.7 | 2019年5月22日 |
#1296 在 命令行实用工具 中
每月下载 23 次
20KB
304 行
RionaCalc
支持大整数、浮点数、普通分数和复数的数学表达式计算器。它可以以两种模式启动:立即模式,当 rclc 接收到一个表达式时,计算它,打印结果并退出;以及交互模式,当 rclc 显示提示并计算您输入的每个表达式。
欢迎提出建议、想法和拉取请求。谢谢!
为什么还需要另一个计算器
有时候我需要评估包含非浮点数值的表达式:普通分数、复数、任意精度整数。但大多数计算器只处理浮点数。即使计算器支持其他类型的数字,也通常需要切换到特殊模式。例如,支持普通分数的计算器需要进入普通分数模式才能使用它们 - 在这种模式下,其他类型的数字不可用。一些计算器支持复数,但并不透明地提供给用户。例如,其文档说明支持复数,但计算器在求负数的平方根时出错,错误信息为 "无效参数"。我希望有一个计算器,允许我在一个表达式中混合任何类型的数字,并且能够检测结果的正确类型和参数。
较低的要求
- 使用弧度或度数计算三角函数,无需打开和关闭弧度/度数开关
- 在终端中以交互模式工作或能够通过命令行传递表达式并显示结果的计算器。是的,
bc
可以做到。但对我来说,它的使用感觉不太直观:不是简单的调用bc "expr"
,而是必须以echo "expr" | bc
的方式启动 - 用户定义的变量。尽管大多数计算器默认支持它
非常简单的示例(ans
- 一个特殊变量,用于存储最后一个成功评估的结果)
> sqrt(-2) // square root of negative number
= 0.0+1.4142135623730952i
> sqr(ans) // square root of a complex number may produce real number
= -2.0000000000000006
> 345**12 // big integer in action
= 2843342266303054544082275390625
> 1\2 + 3\5 // one half and three fifth is one and one tenth
= 1\1\10
> sqr(3\5) // square of a rational number is a rational number
= 9\25
> sin(90°) == sin(pi/2) // degrees and radians mixed in one expression, '°' can be replaced with 'd' for easier typing
= 1
特性
- 无模式:可以在一个表达式中透明地使用所有类型的值。例如,
(1\2 + 3\5) * 2-3i + sin(30d) + cos(0.25)
- 将两个分数之和(一个四分之一和三个五分之一)乘以一个复数,加上30度的正弦值和0.25弧度的余弦值。空格仅用于可读性,可以省略 - 自动选择函数更合适的参数类型:例如,
sqrt(-4)
将浮点数-4
转换为复数-4+0i
,然后计算结果0+2i
。同样适用于计算负浮点数的对数,以及大于1.0
的acos和asin - 自动添加省略的乘号:例如,
(1+2)(2+9)
的计算结果为(1+2)*(2+9)
- 具有单一值参数的函数不需要将参数括在括号内:例如,
sin cos 2
的计算结果为sin(cos(2))
- 可以省略最后的闭括号:例如,
(1+2)*(2+9
与(1+2)*(2+9)
相同 - 三角函数使用弧度和度。纯数字被视为弧度,度需要有一个或三个后缀。两种度数格式:
20d30m50s
或20°30'50"
。分钟和秒可以省略,在这种情况下,度可以是一个浮点数,如30.25d
。因此,sin(pi/2)
等于sin(90°)
- 每个数字都可以包含分组分隔符
_
以提高可读性——当使用大整数时非常有用。3_000.90_23
等于3000.9023
- 点和逗号都被视为小数分隔符
- 函数参数分隔符是
;
。如果一个函数接收的参数多于它需要的,则丢弃多余的参数:例如,sqrt(11;12;13)
与sqrt(11)
相同 - 普通分数使用
\
分隔其部分。它们可以带有整数部分,或者只带有分子和分母,例如1\1\10
等于11\10
- 两种复数格式:在末尾或中间标记。例如,
1+2i
等于1+i2
。此外,可以使用j
代替i
——但计算器的输出总是使用i
- 十六进制(以
0x
开头)、八进制(以0o
开头)和二进制(以0b
开头)数字 - 基本的变量和脚本支持允许用户创建自己的常量库,并在计算器启动时预加载它们
- 交互式模式中的命令(目前非常有限):
quit
或exit
关闭计算器,以及load <filename>
——加载文件并逐行评估,跳过注释,打印最后评估的结果 - 字符
%
可以是模运算符或百分比运算符。这取决于字符的位置:如果%
在表达式末尾之前、关闭括号之前或另一个运算符之前(并且前一个运算符是+
、-
、*
或/
之一),则该字符被视为百分比运算符
请在此处阅读详细的文档。
安装
该应用程序可以从源代码编译,也可以使用cargo进行安装。
$ cargo install rclc
您需要支持Rust 2018版(Rust 1.31或更高版本)的Rust编译器来完成此操作。如果您想升级现有的rclc,请执行以下命令:
$ cargo install rclc --force
预编译的二进制文件
对于Windows,您可以从发布页面下载预编译的二进制文件。
- Windows的二进制文件可以在Windows 7或更高版本的Windows上运行。
已知问题
- 计算器尚未进行彻底测试,可能会出现错误。请通知我任何问题。
- 尚未支持任意精度的浮点数 - 所有浮点数都是64位浮点数。我知道有Rust版本的GNU GMP,但我目前不想使用它 - 我记得在Windows上尝试构建库时遇到了问题。
依赖项
~4.5MB
~83K SLoC