43个版本
0.1.43 | 2023年4月11日 |
---|---|
0.1.42 | 2023年3月3日 |
0.1.41 | 2022年12月2日 |
0.1.40 | 2022年10月26日 |
0.1.0 | 2021年2月2日 |
#152 in 编码
2,938 每月下载量
在 3 crates 中使用
270KB
5.5K SLoC
decimal-rs
具有最高38位精度的十进制高精度实现。
功能标志
serde
:当启用此可选依赖项时,Decimal
实现了serde::Serialize
和serde::Deserialize
特性。
用法
要构建一个十进制数,使用 Decimal
use decimal_rs::Decimal;
let n1: Decimal = "123".parse().unwrap();
let n2: Decimal = "456".parse().unwrap();
let result = n1 + n2;
assert_eq!(result.to_string(), "579");
从Rust原始类型构建十进制数
use decimal_rs::Decimal;
let n1 = Decimal::from(123_i32);
let n2 = Decimal::from(456_i32);
let result = n1 + n2;
assert_eq!(result, Decimal::from(579_i32));
十进制支持高精度算术运算。
use decimal_rs::Decimal;
let n1: Decimal = "123456789.987654321".parse().unwrap();
let n2: Decimal = "987654321.123456789".parse().unwrap();
let result = n1 * n2;
assert_eq!(result.to_string(), "121932632103337905.662094193112635269");
十进制可以编码为字节并从字节解码。
use decimal_rs::Decimal;
let n1 = "123456789.987654321".parse::<Decimal>().unwrap();
let mut bytes = Vec::new();
n1.encode(&mut bytes).unwrap();
let n2 = Decimal::decode(&bytes);
assert_eq!(n1, n2);
Rust版本
此版本的decimal-rs需要Rust 1.51或更高版本。
许可证
本项目采用Apache-2.0许可证(LICENSE 或 http://www.apache.org/licenses/LICENSE-2.0)。
贡献
除非您明确声明,否则您提交给decimal-rs的任何有意贡献都应按Apache-2.0许可证许可,不附加任何额外条款或条件。
依赖项
~250KB