scientific 0.2.0

Arbitrary precision scientific number (no_std capable, in pure Rust)
Documentation
use crate::types::sci::Sci;
use core::fmt::{Formatter, Write};

impl Sci {
  pub(crate) fn display(&self, f: &mut Formatter<'_>) -> Result<(), core::fmt::Error> {
    if self.is_zero() {
      return f.write_char('0');
    }
    if self.sign.is_negative() {
      f.write_char('-')?;
    }
    let exp = self.exponent0();
    #[allow(clippy::manual_range_contains)]
    if exp >= -1 && exp <= 0 {
      f.write_char('0')?;
      f.write_char('.')?;
      for _ in exp..0 {
        f.write_char('0')?;
      }
      for i in 0..self.len {
        f.write_char((b'0' + self.data[i] as u8).into())?;
      }
    } else if exp > 1 && exp <= 7 {
      let mid = exp.min(self.len);
      for i in 0..mid {
        f.write_char((b'0' + self.data[i] as u8).into())?;
      }
      for _ in mid..exp {
        f.write_char('0')?;
      }
      if self.len > exp {
        f.write_char('.')?;
        for i in exp..self.len {
          f.write_char((b'0' + self.data[i] as u8).into())?;
        }
      }
    } else {
      f.write_char((b'0' + *self.data as u8).into())?;
      if self.len > 1 {
        f.write_char('.')?;
        for i in 1..self.len {
          f.write_char((b'0' + self.data[i] as u8).into())?;
        }
      }
      if exp != 1 {
        write!(f, "e{}", exp - 1)?;
      }
    }
    Ok(())
  }
}