Enum fixed_decimal::RoundingIncrement
source · #[non_exhaustive]pub enum RoundingIncrement {
MultiplesOf1,
MultiplesOf2,
MultiplesOf5,
MultiplesOf25,
}
Expand description
Increment used in a rounding operation.
Forces a rounding operation to round to only multiples of the specified increment.
§Example
use fixed_decimal::{SignedFixedDecimal, RoundingIncrement, SignedRoundingMode, UnsignedRoundingMode};
use writeable::assert_writeable_eq;
let dec = SignedFixedDecimal::from_str("-7.266").unwrap();
let mode = SignedRoundingMode::Unsigned(UnsignedRoundingMode::Expand);
let increments = [
// .266 normally expands to .27 when rounding on position -2...
(RoundingIncrement::MultiplesOf1, "-7.27"),
// ...however, when rounding to multiples of 2, .266 expands to .28, since the next multiple
// of 2 bigger than the least significant digit of the rounded value (7) is 8.
(RoundingIncrement::MultiplesOf2, "-7.28"),
// .266 expands to .30, since the next multiple of 5 bigger than 7 is 10.
(RoundingIncrement::MultiplesOf5, "-7.30"),
// .266 expands to .50, since the next multiple of 25 bigger than 27 is 50.
// Note how we compare against 27 instead of only 7, because the increment applies to
// the two least significant digits of the rounded value instead of only the least
// significant digit.
(RoundingIncrement::MultiplesOf25, "-7.50"),
];
for (increment, expected) in increments {
assert_writeable_eq!(
dec.clone().rounded_with_mode_and_increment(
-2,
mode,
increment
),
expected
);
}
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
MultiplesOf1
Round the least significant digit to any digit (0-9).
This is the default rounding increment for all the methods that don’t take a
RoundingIncrement
as an argument.
MultiplesOf2
Round the least significant digit to multiples of two (0, 2, 4, 6, 8).
MultiplesOf5
Round the least significant digit to multiples of five (0, 5).
MultiplesOf25
Round the two least significant digits to multiples of twenty-five (0, 25, 50, 75).
With this increment, the rounding position index will match the least significant digit of the multiple of 25; e.g. the number .264 expanded at position -2 using increments of 25 will give .50 as a result, since the next multiple of 25 bigger than 26 is 50.
Trait Implementations§
source§impl Clone for RoundingIncrement
impl Clone for RoundingIncrement
source§fn clone(&self) -> RoundingIncrement
fn clone(&self) -> RoundingIncrement
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for RoundingIncrement
impl Debug for RoundingIncrement
source§impl Default for RoundingIncrement
impl Default for RoundingIncrement
source§fn default() -> RoundingIncrement
fn default() -> RoundingIncrement
source§impl PartialEq for RoundingIncrement
impl PartialEq for RoundingIncrement
impl Copy for RoundingIncrement
impl Eq for RoundingIncrement
impl StructuralPartialEq for RoundingIncrement
Auto Trait Implementations§
impl Freeze for RoundingIncrement
impl RefUnwindSafe for RoundingIncrement
impl Send for RoundingIncrement
impl Sync for RoundingIncrement
impl Unpin for RoundingIncrement
impl UnwindSafe for RoundingIncrement
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more