/ JAVASCRIPT

Formatar valor inteiro para Real(BRL)

Formatar valores inteiros para serem exibidos como valores monetários é corriqueiro e com esta função fica extremamente simples.

Essa função usa expressões regulares e funciona em números com até 12 dígitos além de números negativos.

function toReal(int){
    var real = int + ''
    var neg = false

    if(real.indexOf("-") == 0){
        neg = true;
        real = real.replace("-","")
    }

    if(real.length == 1) real = "0" + real

    real = real.replace(/([0-9]{2})$/g, ",$1")
    if( real.length > 6)
        real = real.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2")

    if( real.length > 9)
        real = real.replace(/([0-9]{3}).([0-9]{3}),([0-9]{2}$)/g,".$1.$2,$3")

    if( real.length > 12)
        real = real.replace(/([0-9]{3}).([0-9]{3}).([0-9]{3}),([0-9]{2}$)/g,".$1.$2.$3,$4")

    if(real.indexOf(".") == 0) real = real.replace(".","")
    if(real.indexOf(",") == 0) real = real.replace(",","0,")

    return (neg ? '-' + real : real)
}

Veja alguns exemplos de uso e as saidas respectivas.

toReal(5)  // 0,05
toReal(50)  // 0,50
toReal(500)  // 5,00
toReal(5000)  // 50,00
toReal(50000)  // 500,00
toReal(500000)  // 5.000,00
toReal(5000000)  // 50.000,00
toReal(50000000)  // 500.000,00
toReal(500000000)  // 5.000.000,00
toReal(5000000000)  // 50.000.000,00
toReal(50000000000)  // 500.000.000,00
toReal(500000000000)  // 5.000.000.000,00
toReal(-500000000000) // -5.000.000.000,00

Veja no JsFiddle. https://jsfiddle.net/lucianobragaweb/cLcuj4vu/

Referências

Wikipédia - Expressões Regulares

lucianobragaweb

Luciano Braga

Hi there, I'm Luciano Braga and I'm a Full Stack Developer and student of Computer Science. I use this website to post about code, web technologies and others things as algorithms for sample. You can see my projects on GitHub.

Read More