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
impl RoundingMode
sourcepub fn round_pair(&self, sign: Sign, pair: (u8, u8), trailing_zeros: bool) -> u8
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
sourcepub fn round_u32(
&self,
at_digit: NonZeroU8,
sign: Sign,
value: u32,
trailing_zeros: bool
) -> u32
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
impl Clone for RoundingMode
source§fn clone(&self) -> RoundingMode
fn clone(&self) -> RoundingMode
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for RoundingMode
impl Debug for RoundingMode
source§impl Hash for RoundingMode
impl Hash for RoundingMode
source§impl PartialEq for RoundingMode
impl PartialEq for RoundingMode
source§fn eq(&self, other: &RoundingMode) -> bool
fn eq(&self, other: &RoundingMode) -> bool
self
and other
values to be equal, and is used
by ==
.