4 releases
0.1.4  Dec 7, 2023 

0.1.3  Aug 18, 2021 
0.1.2  Mar 17, 2021 
0.1.1  May 21, 2020 
0.1.0 

#87 in Math
15,291 downloads per month
Used in 2 crates
14KB
243 lines
Percentage Type with Decimal
A type to represent percentage with high precision thanks to rust_decimal
.
A percentage can perform addition, subtraction and multiplication.
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());
Contributing
Contributions and feed back are welcome following Github workflow.
License
decimal_percentage
is provided under the MIT license. See LICENSE.
Dependencies
~1–1.6MB
~35K SLoC