Skip to main content

RoundingIncrement

Enum 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::{Decimal, RoundingIncrement, SignedRoundingMode, UnsignedRoundingMode};
use writeable::assert_writeable_eq;
let dec = Decimal::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
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

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

Source§

fn clone(&self) -> RoundingIncrement

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for RoundingIncrement

Source§

impl Debug for RoundingIncrement

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RoundingIncrement

Source§

fn default() -> RoundingIncrement

Returns the “default value” for a type. Read more
Source§

impl Eq for RoundingIncrement

Source§

impl PartialEq for RoundingIncrement

Source§

fn eq(&self, other: &RoundingIncrement) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for RoundingIncrement

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.