ancdec 0.3.4

Exact decimal family for no_std: 4 types from embedded (4B, 4-digit) to institutional (40B, 76-digit), split int/frac storage
Documentation
use super::AncDec8;
use core::fmt;

/// Display trait: enables `format!`, `println!`, `to_string()`
impl fmt::Display for AncDec8 {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let is_zero = self.int == 0 && self.frac == 0;
        let sign = if self.neg && !is_zero { "-" } else { "" };

        if let Some(prec) = f.precision() {
            if prec == 0 {
                write!(f, "{}{}", sign, self.int)
            } else if self.scale == 0 {
                write!(f, "{}{}.{:0>w$}", sign, self.int, "", w = prec)
            } else if prec <= self.scale as usize {
                let div = 10u32.pow((self.scale as u32) - (prec as u32));
                write!(f, "{}{}.{:0>w$}", sign, self.int, self.frac as u32 / div, w = prec)
            } else {
                write!(
                    f,
                    "{}{}.{:0>s$}{:0>p$}",
                    sign,
                    self.int,
                    self.frac,
                    "",
                    s = self.scale as usize,
                    p = prec - self.scale as usize
                )
            }
        } else if self.scale == 0 {
            write!(f, "{}{}", sign, self.int)
        } else {
            write!(
                f,
                "{}{}.{:0>w$}",
                sign,
                self.int,
                self.frac,
                w = self.scale as usize
            )
        }
    }
}