Enum bigdecimal::rounding::RoundingMode

source ·
pub enum RoundingMode {
    Up,
    Down,
    Ceiling,
    Floor,
    HalfUp,
    HalfDown,
    HalfEven,
}
Expand description

Determines how to calculate the last digit of the number

Default rounding mode is HalfUp

Variants§

§

Up

Always round away from zero

  • 5.5 → 6.0
  • 2.5 → 3.0
  • 1.6 → 2.0
  • 1.1 → 2.0
  • -1.1 → -2.0
  • -1.6 → -2.0
  • -2.5 → -3.0
  • -5.5 → -6.0
§

Down

Always round towards zero

  • 5.5 → 5.0
  • 2.5 → 2.0
  • 1.6 → 1.0
  • 1.1 → 1.0
  • -1.1 → -1.0
  • -1.6 → -1.0
  • -2.5 → -2.0
  • -5.5 → -5.0
§

Ceiling

Towards +∞

  • 5.5 → 6.0
  • 2.5 → 3.0
  • 1.6 → 2.0
  • 1.1 → 2.0
  • -1.1 → -1.0
  • -1.6 → -1.0
  • -2.5 → -2.0
  • -5.5 → -5.0
§

Floor

Towards -∞

  • 5.5 → 5.0
  • 2.5 → 2.0
  • 1.6 → 1.0
  • 1.1 → 1.0
  • -1.1 → -2.0
  • -1.6 → -2.0
  • -2.5 → -3.0
  • -5.5 → -6.0
§

HalfUp

Round to ‘nearest neighbor’, or up if ending decimal is 5

  • 5.5 → 6.0
  • 2.5 → 3.0
  • 1.6 → 2.0
  • 1.1 → 1.0
  • -1.1 → -1.0
  • -1.6 → -2.0
  • -2.5 → -3.0
  • -5.5 → -6.0
§

HalfDown

Round to ‘nearest neighbor’, or down if ending decimal is 5

  • 5.5 → 5.0
  • 2.5 → 2.0
  • 1.6 → 2.0
  • 1.1 → 1.0
  • -1.1 → -1.0
  • -1.6 → -2.0
  • -2.5 → -2.0
  • -5.5 → -5.0
§

HalfEven

Round to ‘nearest neighbor’, if equidistant, round towards nearest even digit

  • 5.5 → 6.0
  • 2.5 → 2.0
  • 1.6 → 2.0
  • 1.1 → 1.0
  • -1.1 → -1.0
  • -1.6 → -2.0
  • -2.5 → -2.0
  • -5.5 → -6.0

Implementations§

source§

impl RoundingMode

source

pub fn round_pair(&self, sign: Sign, pair: (u8, u8), trailing_zeros: bool) -> u8

Perform the rounding operation

§Parameters
  • sign (Sign) - Sign of the number to be rounded
  • pair (u8, u8) - The two digits in question to be rounded. i.e. to round 0.345 to two places, you would pass (4, 5). As decimal digits, they must be less than ten!
  • trailing_zeros (bool) - True if all digits after the pair are zero. This has an effect if the right hand digit is 0 or 5.
§Returns

Returns the first number of the pair, rounded. The sign is not preserved.

§Examples
  • To round 2341, pass in Plus, (4, 1), true → get 4 or 5 depending on scheme
  • To round -0.1051, to two places: Minus, (0, 5), false → returns either 0 or 1
  • To round -0.1, pass in true, (0, 1) → returns either 0 or 1

Calculation of pair of digits from full number, and the replacement of that number should be handled separately

source

pub fn round_u32( &self, at_digit: NonZeroU8, sign: Sign, value: u32, trailing_zeros: bool ) -> u32

Round value at particular digit, returning replacement digit

§Parameters
  • at_digit (NonZeroU8) - 0-based index of digit at which to round. 0 would be the first digit, and would

  • sign (Sign) - Sign of the number to be rounded

  • value (u32) - The number containing digits to be rounded.

  • trailing_zeros (bool) - True if all digits after the value are zero.

§Returns

Returns the first number of the pair, rounded. The sign is not preserved.

§Examples
  • To round 823418, at digit-index 3: 3, Plus, 823418, true → 823000 or 824000, depending on scheme
  • To round -100205, at digit-index 1: 1, Minus, 100205, true → 100200 or 100210

Calculation of pair of digits from full number, and the replacement of that number should be handled separately

Trait Implementations§

source§

impl Clone for RoundingMode

source§

fn clone(&self) -> RoundingMode

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for RoundingMode

source§

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

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

impl Hash for RoundingMode

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for RoundingMode

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for RoundingMode

source§

impl Eq for RoundingMode

source§

impl StructuralPartialEq for RoundingMode

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> 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,

§

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>,

§

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>,

§

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.