# fixedpoint Fixed-point numbers with an underlying type and precision divisor. Generally this is a power of 10 but you can do other things, like 256 to use a lower byte etc. Presumably the compiler optimises operations to use shifting instead of division/multiplication here. ```rs // use it directly let x = Fixed::from(5.3f64); println!("{}", x * 2); // 10.6 // have a wrapper that controls what operations can be done // useful for units of measurement that have special semantics // for example, multiplying lengths gives an area. struct Length(Fixed); struct Area(Fixed); impl Mul for Length { type Output = Area; fn mul(self, rhs: Self) -> Area { Area((self.0 * rhs.0).into()) } } ```