2 个稳定版本
1.0.1 | 2024年6月23日 |
---|---|
1.0.0 | 2024年6月22日 |
#6 in #科学
23KB
552 行
sci-calc
一个易于使用,功能齐全的带有命令行界面的科学计算器库。
$ sci-calc
2 + 2
= 4
a = ans * pi
= 12.566370614359172
cos(a)
= 1
exit
$
功能
- 变量赋值和回叫
- 全面的内置函数和常数
- 带有行编辑和历史回叫的命令行界面
- 优雅的,详尽的错误处理
库
使用 cargo 将此软件包添加到您的项目中
cargo add sci-calc
以下是一个快速程序,实现了 sci-calc
软件包,有关详细信息,请参阅完整文档。
use std::io::stdin;
use sci_calc::{calculate, context::Context};
fn main() {
let mut ctx = Context::new();
loop {
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
match calculate(input.as_str(), &mut ctx) {
Ok(result) => println!(" = {result}"),
Err(e) => println!("{e}"),
}
}
}
命令行界面
从源代码编译
cargo build --release --bin sci-calc
这将编译二进制文件到 target/release/sci-calc
。运行带有方程作为参数的二进制文件来评估该表达式,或运行不带参数来使用计算器作为交互式解释器。使用 Ctrl-C 或 exit 关键字退出程序。
$ sci-calc 5 + 5
= 10
$ sci-calc
5 + 5
= 10
ans * 2
= 20
exit
$
内容
基本算术
5 + 5 * 2^3
= 45
1.23e5 * 4.56e-6
= 0.56088
20!
= 2432902008176640000
实现的运算符按照优先级从高到低排序
- 加法:
+
,-
- 乘法:
*
,/
,%
(取模),//
(向下取整除) - 指数:
^
- 阶乘:
!
变量回叫
a = 1 + 1
= 2
b = 2 * 2
= 4
a + b
= 6
ans + 4
= 10
内置函数
变量
e
= 2.718281828459045
2 * pi
= 6.283185307179586
ans / 2
= 3.141592653589793
函数
sqrt(2)
= 1.4142135623730951
ln(e)
= 1
2 * asin(1)
= 3.141592653589793
stddev(1, 2, 3)
= 0.816496580927726
所有实现的函数
- 平方根
sqrt(x)
和 n 次根root(x, root)
- 阶乘
fac(x)
,与!
运算符相同 - 平均值
mean(x, y, ...)
和标准差stddev(x, y, ...)
- 三角函数:
sin(x)
、cos(x)
和tan(x)
- 反函数:
asin(x)
... - 双曲函数:
sinh(x)
... - 双曲反函数:
asinh(x)
...
- 反函数:
- 最小值
min(x, y)
和最大值max(x, y)
- 自然对数
ln(x)
、以10为底的对数log10(x)
和以n为底的对数log(x)
- 绝对值
abs(x)
、四舍五入round(x)
、向下取整floor(x)
和向上取整ceil(x)
错误
解析错误示例
5 +
Parser error: Unexpected EOI
5 + + 5
Parser error: Unexpected token
| 5 + + 5
| └── here
5@ + 5
Parser error: Invalid token
| 5@ + 5
| └── here
变量错误示例
ans * 2
Calculation error: Cannot use 'ans' without a previous evaluated equation
pi = 3
Assignment error: Can't assign value to constant 'pi'
a + 5
Undefined identifier: Unknown variable 'a'
依赖
~6–15MB
~183K SLoC