#string #calculator #compute #formulas #eval-f64 #eval-number #eval-complex

string_calculator

用于计算字符串内公式的字符串计算器

10个不稳定版本 (3个破坏性更新)

0.4.0 2024年7月22日
0.3.3 2024年7月3日
0.2.2 2024年6月30日
0.1.1 2024年6月30日

数学 中排名第139

Download history 64/week @ 2024-06-23 842/week @ 2024-06-30 15/week @ 2024-07-07 2/week @ 2024-07-14 101/week @ 2024-07-21 80/week @ 2024-07-28

每月下载量211

MIT/Apache

345KB
9K SLoC

字符串计算器

一个包含计算字符串内公式的eval方法的简单包。

如何使用

只需导入所需的eval并使用它。

use string_calculator::eval_f64;

fn main() {
  println!("{}", eval_f64("(2+3) / 2".to_string(), 0.0)); // 2.5
}

特性

默认情况下,所有功能都启用。如果您只想使用特定的eval方法,请使用与其名称相关的列表中的功能

  • eval_complex
  • eval_decimal
  • eval_f64
  • eval_i64
  • eval_number

示例

[dependencies]
string_calculator = { version = "0.4", default-features = false, features = ["eval_decimal"] }

运算符

由于有很多东西可以通过视觉上简化,这里列出了实现的全部运算符列表。

  1. 加法 (x+y) 此运算符处理两个数字之间的加法。示例:1 + 2 = 3
  2. 减法 (x-y) 此运算符处理两个数字之间的减法。示例:2 - 1 = 1
  3. 乘法 (x*y) 此运算符处理两个数字之间的乘法。示例:3 * 2 = 6
  4. 除法 (x/y) 此运算符处理两个数字之间的除法。示例:4 / 2 = 2
  5. 模运算(x%y)(仅在 eval_decimaleval_numbereval_f64eval_i64 中)此运算符处理两个数之间的余数。例如:4 % 2 = 0
  6. 左移位(x<eval_i64 中)此运算符将 x 的位左移 y 位(等同于乘以 2^y)。例如:1 << 2 = 4
  7. 右移位(x>>y)(仅在 eval_i64 中)此运算符将 x 的位右移 y 位(等同于除以 2^y)。例如:4 >> 2 = 1
  8. 幂运算(x^y)此运算符处理 xy 次幂,xy 均为数字。例如:3^3 = 27
  9. 下标支持(x²)此运算符处理整数 x 的幂次,使用上标表示法(如 ²)。例如:5² = 25
  10. 阶乘运算(x!)(仅在 eval_decimaleval_numbereval_f64eval_i64 中)此运算符处理实数 x 的阶乘。例如:5! = 120
  11. 度转弧度(x°)(仅在 eval_complexeval_numbereval_f64 中)此运算符处理从度到弧度的转换。请注意,它的优先级与乘法相同。例如:3° = 0.05235987755982989
  12. 弧度转度(x rad)(仅在 eval_complexeval_numbereval_f64 中)此运算符处理从弧度到度的转换。请注意,它的优先级与乘法相同。例如:3 rad = 171.8873385393

常量

  1. π(π)(仅在 eval_complexeval_numbereval_decimaleval_f64 中)π 可表示为 piπ
  2. e(e)(仅在 eval_complexeval_numbereval_decimaleval_f64 中)e 可表示为 e

函数表示法

如果需要,某些函数可以完全使用它们的原始数学符号来表示。

  1. 地板(⌊x⌋)(仅在 eval_f64eval_numbereval_decimal 中)此函数返回小于或等于 x 的最大整数。例如:2.4 = 2
  2. 天花板(⌈x⌉)(仅在 eval_f64eval_numbereval_decimal 中)此函数返回大于或等于 x 的最小整数。例如:2.4 = 3

函数

  1. 绝对值(abs(x))
  2. 符号函数(sgn(x),sign(x),signum(x))(仅在 eval_decimaleval_f64eval_numbereval_i64 中)
  3. 幂(pow(x,y))
  4. 平方根(sqrt(x))
  5. 根(root(x, n))
  6. 取模(mod(x,y))(仅在 eval_decimaleval_numbereval_f64eval_i64 中)
  7. 指数(exp(x),exp2(x))
  8. 对数(ln(x),lb(x),log(x, b))
  9. 极值(min(...X),max(...X))(仅在 eval_decimaleval_numbereval_f64eval_i64 中)
  10. 平均值(avg(...X))(仅在 eval_decimaleval_numbereval_f64eval_i64 中)
  11. 中位数(median(...X),med(...X))(仅在 eval_decimaleval_numbereval_f64eval_i64 中)
  12. 截断(trunc(x),truncate(x))(仅在 eval_f64eval_numbereval_decimal 中)
  13. 地板(floor(x))(仅在 eval_f64eval_numbereval_decimal 中)
  14. 天花板(ceil(x))(仅在 eval_f64eval_numbereval_decimal 中)
  15. 四舍五入(round(x))(仅在 eval_f64eval_numbereval_decimal 中)
  16. Lambert W(lambert_w(x),w(x))(仅在 eval_f64eval_numbereval_decimal 中)
  17. 迭代对数(ilog(x, b))(仅在 eval_f64eval_numbereval_decimal 中)
  18. 正弦(sin(θ))(仅在 eval_complexeval_numbereval_f64 中)
  19. 反正弦(asin(x))(仅在 eval_complexeval_numbereval_f64 中)
  20. 余弦(cos(θ))(仅在 eval_complexeval_numbereval_f64 中)
  21. 反余弦(acos(x))(仅在 eval_complexeval_numbereval_f64 中)
  22. 正切(tan(θ))(仅在 eval_complexeval_numbereval_f64 中)
  23. 反正切(atan(x))(仅在 eval_complexeval_numbereval_f64 中)
  24. 双曲正弦(sinh(θ))(仅在 eval_complexeval_numbereval_f64 中)
  25. 双曲反正弦(asinh(x),arsinh(x))(仅在 eval_complexeval_numbereval_f64 中)
  26. 双曲余弦(cosh(θ))(仅在 eval_complexeval_numbereval_f64 中)
  27. 双曲反余弦(acosh(x),arcosh(x))(仅在 eval_complexeval_numbereval_f64 中)
  28. 双曲正切(tanh(θ))(仅在 eval_complexeval_numbereval_f64 中)
  29. 双曲反正切函数(atanh(x),artanh(x))(仅在 eval_complexeval_numbereval_f64 中)
  30. 反正切2(atan2(y, x))(仅在 eval_f64eval_number 中)
  31. 最大公约数(gcd(...X))(仅在 eval_i64 中)
  32. 最小公倍数(lcm(...X))(仅在 eval_i64 中)

占位符获取器

这里使用的 @ 符号用作要放入 eval_XXXXX 的值的占位符。如果您正在编写计算器,例如使用您的上一个答案,这可能很有用。

依赖项

~160KB