= Receita: Formatar números em qualquer linguagem = Existem pelo menos três linguas para as quais o locale.localeconv()['thousands_sep'] é vazio: português 'pt', português brasileiro ('pt_br') e espanhol ('es'). Para estas linguagens as funções abaixo são úteis. A primeira é bem simples (e rápida) mas só formata inteiros positivos. A segunda é bem genérica. == Código == {{{#!python def format_positive_integer(number): l = list(str(number)) c = len(l) while c > 3: c -= 3 l.insert(c, '.') return ''.join(l) def format_number(number, precision=0, group_sep='.', decimal_sep=','): number = ('%.*f' % (max(0, precision), number)).split('.') integer_part = number[0] if integer_part[0] == '-': sign = integer_part[0] integer_part = integer_part[1:] else: sign = '' if len(number) == 2: decimal_part = decimal_sep + number[1] else: decimal_part = '' integer_part = list(integer_part) c = len(integer_part) while c > 3: c -= 3 integer_part.insert(c, group_sep) return sign + ''.join(integer_part) + decimal_part }}} == Exemplo de uso == {{{ #!python if __name__ == '__main__': for numero in (1,12,123.2,1234,12345.2,123456,1234567.3345,12345678,123456789,1234567890): print format_number(numero, 2).rjust(16) for numero in (1,12,123.2,1234,12345,123456,1234567,12345678,123456789,1234567890): print format_positive_integer(numero).rjust(16) }}} Existem soluções alternativas para este problema em FormatarNumeros. Volta para CookBook. ---- Clodoaldo Pinto Neto