precision_core/
rounding.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
7pub enum RoundingMode {
8 Down,
10 Up,
12 TowardZero,
14 AwayFromZero,
16 #[default]
18 HalfEven,
19 HalfUp,
21 HalfDown,
23}
24
25impl RoundingMode {
26 pub(crate) fn to_rust_decimal(self) -> rust_decimal::RoundingStrategy {
27 match self {
28 Self::Down => rust_decimal::RoundingStrategy::ToNegativeInfinity,
29 Self::Up => rust_decimal::RoundingStrategy::ToPositiveInfinity,
30 Self::TowardZero => rust_decimal::RoundingStrategy::ToZero,
31 Self::AwayFromZero => rust_decimal::RoundingStrategy::AwayFromZero,
32 Self::HalfEven => rust_decimal::RoundingStrategy::MidpointNearestEven,
33 Self::HalfUp => rust_decimal::RoundingStrategy::MidpointAwayFromZero,
34 Self::HalfDown => rust_decimal::RoundingStrategy::MidpointTowardZero,
35 }
36 }
37}