8 个版本 (1 个稳定版)

1.0.0 2021年7月14日
0.9.7 2021年7月2日
0.9.4 2021年6月30日
0.9.3 2019年5月22日
0.9.0 2019年4月29日

#1053 in 算法

每月35次下载
用于 2 crate

MIT 协议

135KB
3K SLoC

是什么

支持大整数、浮点数、普通分数和复数的数学表达式评估库。该库被项目 RionaCalc 使用

特性

  • 自动选择更合适的函数参数类型:例如,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) 相同。
  • 三角函数使用弧度和度。纯数字被视为弧度,度需要有一个或三个后缀。两种度数格式:20d30m50s20°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 开头)数字
  • 字符 % 可以是模运算符或百分比运算符。这取决于字符的位置:如果 % 在表达式末尾或括号之前或另一个运算符之前,并且前一个运算符是 +-*/ 之一,则该字符被视为百分比运算符

依赖项

~3.5MB
~76K SLoC