pub trait FixedPointNumber: Copy + Default + Debug + Saturating + Bounded + Eq + PartialEq<Self> + Ord + PartialOrd<Self> + CheckedSub + CheckedAdd + CheckedMul + CheckedDiv + Add<Self> + Sub<Self> + Div<Self> + Mul<Self> + Zero + One {
    type Inner: Debug + One + CheckedMul + CheckedDiv + FixedPointOperand;

    const DIV: Self::Inner;
    const SIGNED: bool;
Show 22 methods fn from_inner(int: Self::Inner) -> Self;
fn into_inner(self) -> Self::Inner; fn accuracy() -> Self::Inner { ... }
fn saturating_from_integer<N>(int: N) -> Self
    where
        N: FixedPointOperand
, { ... }
fn checked_from_integer(int: Self::Inner) -> Option<Self> { ... }
fn saturating_from_rational<N, D>(n: N, d: D) -> Self
    where
        N: FixedPointOperand,
        D: FixedPointOperand
, { ... }
fn checked_from_rational<N, D>(n: N, d: D) -> Option<Self>
    where
        N: FixedPointOperand,
        D: FixedPointOperand
, { ... }
fn checked_mul_int<N>(self, n: N) -> Option<N>
    where
        N: FixedPointOperand
, { ... }
fn saturating_mul_int<N>(self, n: N) -> N
    where
        N: FixedPointOperand
, { ... }
fn checked_div_int<N>(self, d: N) -> Option<N>
    where
        N: FixedPointOperand
, { ... }
fn saturating_div_int<N>(self, d: N) -> N
    where
        N: FixedPointOperand
, { ... }
fn saturating_mul_acc_int<N>(self, n: N) -> N
    where
        N: FixedPointOperand
, { ... }
fn saturating_abs(self) -> Self { ... }
fn reciprocal(self) -> Option<Self> { ... }
fn is_one(&self) -> bool { ... }
fn is_positive(self) -> bool { ... }
fn is_negative(self) -> bool { ... }
fn trunc(self) -> Self { ... }
fn frac(self) -> Self { ... }
fn ceil(self) -> Self { ... }
fn floor(self) -> Self { ... }
fn round(self) -> Self { ... }
}
Expand description

Re-export top-level arithmetic stuff. Something that implements a decimal fixed point number.

The precision is given by Self::DIV, i.e. 1 / DIV can be represented.

Each type can store numbers from Self::Inner::min_value() / Self::DIV to Self::Inner::max_value() / Self::DIV. This is also referred to as the accuracy of the type in the documentation.

Associated Types

The underlying data type used for this fixed point number.

Associated Constants

Precision of this fixed point implementation. It should be a power of 10.

Indicates if this fixed point implementation is signed or not.

Required methods

Builds this type from an integer number.

Consumes self and returns the inner raw value.

Provided methods

Precision of this fixed point implementation.

Creates self from an integer number int.

Returns Self::max or Self::min if int exceeds accuracy.

Creates self from an integer number int.

Returns None if int exceeds accuracy.

Creates self from a rational number. Equal to n / d.

Panics if d = 0. Returns Self::max or Self::min if n / d exceeds accuracy.

Creates self from a rational number. Equal to n / d.

Returns None if d == 0 or n / d exceeds accuracy.

Checked multiplication for integer type N. Equal to self * n.

Returns None if the result does not fit in N.

Saturating multiplication for integer type N. Equal to self * n.

Returns N::min or N::max if the result does not fit in N.

Checked division for integer type N. Equal to self / d.

Returns None if the result does not fit in N or d == 0.

Saturating division for integer type N. Equal to self / d.

Panics if d == 0. Returns N::min or N::max if the result does not fit in N.

Saturating multiplication for integer type N, adding the result back. Equal to self * n + n.

Returns N::min or N::max if the multiplication or final result does not fit in N.

Saturating absolute value.

Returns Self::max if self == Self::min.

Takes the reciprocal (inverse). Equal to 1 / self.

Returns None if self = 0.

Checks if the number is one.

Returns true if self is positive and false if the number is zero or negative.

Returns true if self is negative and false if the number is zero or positive.

Returns the integer part.

Returns the fractional part.

Note: the returned fraction will be non-negative for negative numbers, except in the case where the integer part is zero.

Returns the smallest integer greater than or equal to a number.

Saturates to Self::max (truncated) if the result does not fit.

Returns the largest integer less than or equal to a number.

Saturates to Self::min (truncated) if the result does not fit.

Returns the number rounded to the nearest integer. Rounds half-way cases away from 0.0.

Saturates to Self::min or Self::max (truncated) if the result does not fit.

Implementors