pith. machine review for the scientific record. sign in
def

padLeftZeros

definition
show as:
view math explainer →
module
IndisputableMonolith.URCAdapters.Audit
domain
URCAdapters
line
28 · github
papers citing
none yet

open explainer

Generate a durable explainer page for this declaration.

open lean source

IndisputableMonolith.URCAdapters.Audit on GitHub at line 28.

browse module

All declarations in this module, on Recognition.

explainer page

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

depends on

used by

formal source

  25
  26def pow10 (d : Nat) : Nat := Nat.pow 10 d
  27
  28def padLeftZeros (s : String) (len : Nat) : String :=
  29  let deficit := if s.length ≥ len then 0 else len - s.length
  30  let rec mkZeros (n : Nat) (acc : String) : String :=
  31    match n with
  32    | 0 => acc
  33    | n+1 => mkZeros n ("0" ++ acc)
  34  mkZeros deficit s
  35
  36/-- Render a rational q = n / m to a fixed d-decimal string. -/
  37def ratToDecimal (n : Int) (m : Nat) (d : Nat) : String :=
  38  let sign := if n < 0 then "-" else ""
  39  let nAbs : Nat := Int.natAbs n
  40  if m = 0 then sign ++ "NaN" else
  41  let scale := pow10 d
  42  let scaled : Nat := (nAbs * scale) / m
  43  let ip : Nat := scaled / scale
  44  let fp : Nat := scaled % scale
  45  let fpStr := padLeftZeros (toString fp) d
  46  sign ++ toString ip ++ (if d = 0 then "" else "." ++ fpStr)
  47
  48end NumFmt
  49
  50private def boolToJson (b : Bool) : String := if b then "true" else "false"
  51
  52private def escape (s : String) : String :=
  53  -- Minimal escaping for JSON content used here
  54  s.replace "\"" "\\\""
  55
  56private def quote (s : String) : String := "\"" ++ escape s ++ "\""
  57
  58private def AuditItem.toJson (i : AuditItem) : String :=