7个版本
0.1.6 | 2023年11月17日 |
---|---|
0.1.5 | 2023年10月25日 |
0.1.3 | 2023年9月29日 |
#846 在 解析器实现
每月62次下载
37KB
791 行
num-notation
num-notation 提供多种数字选择,允许您处理包括标准形式、分数和 f64 浮点小数在内的各种数字表示形式。这个多功能的crate使您的Rust项目能够灵活地处理数字。
功能
-
创建和操作灵活的数字表示和表示。
-
轻松切换到不同的数字选择,包括
- StandardForm:标准形式表示的数字。
- 分数:分数数字。
- Decimal:浮点小数数字。
-
为数字变体实现克隆和调试派生。
-
与
num_traits
crate 集成,以进行高级数字操作。 -
可以使用
hash
功能进行哈希。 -
使用
nom
功能与 nom 集成
安装
要在您的Rust项目中使用 num-notation,只需将其添加到您的 Cargo.toml
[dependencies]
num-notation = "0.1" # VERSION AT TIME OF WRITING
要启用与 num_traits
的集成,启用 num
功能
[dependencies]
num-notation = { version = "0.1" , features = ["num"] } # VERSION AT TIME OF WRITING
要启用哈希,启用 hash
功能
[dependencies]
num-notation = { version = "0.1.1" , features = ["hash"] } # VERSION AT TIME OF WRITING
要启用与 nom
的集成,启用 nom
功能
[dependencies]
num-notation = { version = "0.1.1" , features = ["nom"] }
使用方法
创建数字
// Create numbers using the Number enum variants
let decimal_number = Number::Decimal(42.0);
let standard_form_number = Number::StandardForm(StandardForm::new(1.23, 2)); // Mantissa: 1.23, Exponent: 2
let fraction_number = Number::Fraction(Fraction::new(3, 4)); // Numerator: 3, Denominator: 4
您可以使用 Number
枚举变体创建数字。在此,我们创建了十进制、标准形式和分数数字的实例。
执行算术运算
// Perform arithmetic operations
let result = decimal_number + standard_form_number; // Adds a decimal and a number in standard form
println!("Result: {:?}", result);
提取值
// Extract values
if let Number::Decimal(d) = decimal_number {
println!("Decimal value: {}", d);
}
if let Number::StandardForm(sf) = standard_form_number {
println!("StandardForm mantissa: {}, exponent: {}", sf.mantissa(), sf.exponent());
}
if let Number::Fraction(fr) = fraction_number {
println!("Fraction numerator: {}, denominator: {}", fr.numerator(), fr.denominator());
}
比较数字
// Compare numbers
let num1 = Number::Decimal(5.0);
let num2 = Number::StandardForm(StandardForm::new(500.0, -2)); // 500.0e-2 = 5.0
if num1 == num2 {
println!("Numbers are equal.");
} else {
println!("Numbers are not equal.");
}
请注意,这里提供的示例是简化的,仅作为起点。有关crate的完整文档,请访问crate文档,以更好地了解crate的功能和API。
注意
虽然我们努力覆盖尽可能多的场景,但数学的复杂性意味着在所有情况和操作中实现100%的准确性可能具有挑战性。如果您在库中遇到任何问题或不准确性,请毫不犹豫地报告它们,以便我们可以努力改进它。您的反馈对于帮助我们进行必要的改进至关重要。
贡献
欢迎贡献!如果您发现了一个错误或想提出改进建议,请随时打开一个问题或提交一个拉取请求。
依赖项
~1.4–2.1MB
~47K SLoC