percent

Function percent 

Source
pub fn percent(numerator: u64, denominator: u64) -> Option<u64>
Expand description

Calculate numerator divided by denominator as a percentage.

When numerator is very large we cannot multiply it by 100 without risking wrapping, so this is careful to use checked arithmetic to avoid wrapping or overflow. It scales down numerator and denominator by powers of two until a percentage can be calculated. If denominator is zero, returns None.

assert_eq!(percent(100, 1000), Some(10));
assert_eq!(percent(104, 1000), Some(10));
assert_eq!(percent(105, 1000), Some(11)); // <-- Rounds.
assert_eq!(percent(u64::MAX, 1), None); // Overflow.
assert_eq!(percent(0, u64::MAX), Some(0));
assert_eq!(percent(1, u64::MAX), Some(0));
assert_eq!(percent(u64::MAX, u64::MAX), Some(100));
assert_eq!(percent(u64::MAX / 100, u64::MAX), Some(1));
assert_eq!(percent(u64::MAX >> 1, u64::MAX), Some(50));