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
每月下载量211次
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_complexeval_decimaleval_f64eval_i64eval_number
示例
[dependencies]
string_calculator = { version = "0.4", default-features = false, features = ["eval_decimal"] }
运算符
由于有很多东西可以通过视觉上简化,这里列出了实现的全部运算符列表。
- 加法 (x+y) 此运算符处理两个数字之间的加法。示例:
1 + 2= 3 - 减法 (x-y) 此运算符处理两个数字之间的减法。示例:
2 - 1= 1 - 乘法 (x*y) 此运算符处理两个数字之间的乘法。示例:
3 * 2= 6 - 除法 (x/y) 此运算符处理两个数字之间的除法。示例:
4 / 2= 2 - 模运算(x%y)(仅在
eval_decimal,eval_number,eval_f64和eval_i64中)此运算符处理两个数之间的余数。例如:4 % 2= 0 - 左移位(x<
eval_i64 中)此运算符将 x的位左移y位(等同于乘以2^y)。例如:1 << 2= 4 - 右移位(x>>y)(仅在
eval_i64中)此运算符将x的位右移y位(等同于除以2^y)。例如:4 >> 2= 1 - 幂运算(x^y)此运算符处理
x的y次幂,x和y均为数字。例如:3^3= 27 - 下标支持(x²)此运算符处理整数
x的幂次,使用上标表示法(如²)。例如:5²= 25 - 阶乘运算(x!)(仅在
eval_decimal,eval_number,eval_f64和eval_i64中)此运算符处理实数x的阶乘。例如:5!= 120 - 度转弧度(x°)(仅在
eval_complex,eval_number和eval_f64中)此运算符处理从度到弧度的转换。请注意,它的优先级与乘法相同。例如:3°= 0.05235987755982989 - 弧度转度(x rad)(仅在
eval_complex,eval_number和eval_f64中)此运算符处理从弧度到度的转换。请注意,它的优先级与乘法相同。例如:3 rad= 171.8873385393
常量
- π(π)(仅在
eval_complex,eval_number,eval_decimal和eval_f64中)π 可表示为pi或π。 - e(e)(仅在
eval_complex,eval_number,eval_decimal和eval_f64中)e 可表示为e。
函数表示法
如果需要,某些函数可以完全使用它们的原始数学符号来表示。
- 地板(⌊x⌋)(仅在
eval_f64,eval_number和eval_decimal中)此函数返回小于或等于x的最大整数。例如:⌊2.4⌋= 2 - 天花板(⌈x⌉)(仅在
eval_f64,eval_number和eval_decimal中)此函数返回大于或等于x的最小整数。例如:⌈2.4⌉= 3
函数
- 绝对值(abs(x))
- 符号函数(sgn(x),sign(x),signum(x))(仅在
eval_decimal,eval_f64,eval_number和eval_i64中) - 幂(pow(x,y))
- 平方根(sqrt(x))
- 根(root(x, n))
- 取模(mod(x,y))(仅在
eval_decimal,eval_number,eval_f64和eval_i64中) - 指数(exp(x),exp2(x))
- 对数(ln(x),lb(x),log(x, b))
- 极值(min(...X),max(...X))(仅在
eval_decimal,eval_number,eval_f64和eval_i64中) - 平均值(avg(...X))(仅在
eval_decimal,eval_number,eval_f64和eval_i64中) - 中位数(median(...X),med(...X))(仅在
eval_decimal,eval_number,eval_f64和eval_i64中) - 截断(trunc(x),truncate(x))(仅在
eval_f64,eval_number和eval_decimal中) - 地板(floor(x))(仅在
eval_f64,eval_number和eval_decimal中) - 天花板(ceil(x))(仅在
eval_f64,eval_number和eval_decimal中) - 四舍五入(round(x))(仅在
eval_f64,eval_number和eval_decimal中) - Lambert W(lambert_w(x),w(x))(仅在
eval_f64,eval_number和eval_decimal中) - 迭代对数(ilog(x, b))(仅在
eval_f64,eval_number和eval_decimal中) - 正弦(sin(θ))(仅在
eval_complex,eval_number和eval_f64中) - 反正弦(asin(x))(仅在
eval_complex,eval_number和eval_f64中) - 余弦(cos(θ))(仅在
eval_complex,eval_number和eval_f64中) - 反余弦(acos(x))(仅在
eval_complex,eval_number和eval_f64中) - 正切(tan(θ))(仅在
eval_complex,eval_number和eval_f64中) - 反正切(atan(x))(仅在
eval_complex,eval_number和eval_f64中) - 双曲正弦(sinh(θ))(仅在
eval_complex,eval_number和eval_f64中) - 双曲反正弦(asinh(x),arsinh(x))(仅在
eval_complex,eval_number和eval_f64中) - 双曲余弦(cosh(θ))(仅在
eval_complex,eval_number和eval_f64中) - 双曲反余弦(acosh(x),arcosh(x))(仅在
eval_complex,eval_number和eval_f64中) - 双曲正切(tanh(θ))(仅在
eval_complex,eval_number和eval_f64中) - 双曲反正切函数(atanh(x),artanh(x))(仅在
eval_complex,eval_number和eval_f64中) - 反正切2(atan2(y, x))(仅在
eval_f64和eval_number中) - 最大公约数(gcd(...X))(仅在
eval_i64中) - 最小公倍数(lcm(...X))(仅在
eval_i64中)
占位符获取器
这里使用的 @ 符号用作要放入 eval_XXXXX 的值的占位符。如果您正在编写计算器,例如使用您的上一个答案,这可能很有用。
依赖项
~160KB