fun pow10 n = if n <= 0 then 1 else 10 * pow10 (n - 1) fun pad len s = let fun pad' len s = if len <= 0 then s else pad' (len - 1) ("0" ^ s) val len' = String.length s in if len' >= len then s else pad' (len - len') s end fun format pl f = let val whole = trunc f val p10 = pow10 pl val frac = trunc (f * float p10) % p10 in if frac = 0 then show whole else show whole ^ "." ^ pad pl (show frac) end