#import "@preview/oxifmt:1.0.0": strfmt #let format-eur(cents) = { // 1. Gestione del segno let is-negative = cents < 0 let abs-cents = calc.abs(cents) // 2. Calcolo parte intera e frazionaria // Usiamo calc.round per sicurezza se l'input non fosse un intero puro let total-abs = calc.round(abs-cents) let whole = calc.trunc(total-abs / 100) let frac = calc.rem(total-abs, 100) // 3. Formattazione Migliaia (punti) let chars = str(whole).clusters() let formatted-whole = "" let count = 0 for c in chars.rev() { if count > 0 and calc.rem(count, 3) == 0 { formatted-whole = "." + formatted-whole } formatted-whole = c + formatted-whole count += 1 } // 4. Formattazione Centesimi (sempre 2 cifre) // Usiamo lo zero-padding per casi come 5 centesimi -> "05" let frac-str = if frac < 10 { "0" + str(frac) } else { str(frac) } // 5. Output finale let sign = if is-negative { "-" } else { "" } // Ritorna il testo formattato [#sign #formatted-whole,#frac-str €] }