#percentage #decimal #precision #high #rust-decimal

decimal-percentage

基于 rust_decimal 的百分比类型

4 个版本

0.1.4 2023年12月7日
0.1.3 2021年8月18日
0.1.2 2021年3月17日
0.1.1 2020年5月21日
0.1.0 2020年5月21日

#87 in 数学

Download history 3458/week @ 2024-03-14 2463/week @ 2024-03-21 2966/week @ 2024-03-28 2182/week @ 2024-04-04 4159/week @ 2024-04-11 3088/week @ 2024-04-18 4642/week @ 2024-04-25 3496/week @ 2024-05-02 5854/week @ 2024-05-09 4904/week @ 2024-05-16 3154/week @ 2024-05-23 4900/week @ 2024-05-30 4995/week @ 2024-06-06 3579/week @ 2024-06-13 3502/week @ 2024-06-20 1998/week @ 2024-06-27

15,291 每月下载量
用于 2 crates

MIT 许可证

14KB
243 代码行

十进制百分比类型

Build Status MIT Licensed Crates.io decimal-percentage

一个利用 rust_decimal 实现高精度百分比表示的类型。

百分比可以执行加法、减法和乘法操作。

use decimal_percentage::Percentage;
use rust_decimal::Decimal;

let p1 = Percentage::from(0.1f64);
let p2 = Percentage::from(0.1f32);
let p3 = Percentage::try_from("0.1").unwrap();
let p4 = Percentage::from(Decimal::from_f64(0.3).unwrap());

assert_eq!(p1 + p2, Percentage::from(0.2));
assert_eq!(p1 + 0.2, Percentage::from(0.3));
assert_eq!(p4 - p2, Percentage::from(0.2));
assert_eq!(p1 * 66.0, 6.6);
assert_eq!(p1 * 100u32, 10u32);
assert_eq!(p1 * -100i32, -10i32);
// note that a multiplication to integer type can lose precision
assert_eq!(p1 * -33i32, -3i32);
// multiplication on extremely small value with Decimal,
// that is not representable with float point
let small_value = Decimal::from_str("0.0000000000000000002").unwrap();
assert_eq!(p1 * small_value, Decimal::from_str("0.00000000000000000002").unwrap());

贡献

欢迎按照 GitHub 工作流程进行贡献和反馈。

许可证

decimal_percentage 在 MIT 许可证下提供。请参阅 LICENSE

依赖

~1–1.6MB
~35K SLoC