Formatação em java script para valores monetários utilizando prototype
/* decimal_sep: caracteres utilizados como separtor decimal, o padrão é '.' quando omitidos thousands_sep: char usado como separador de milhares, o padrão é ',' quando omitidos */ Number.prototype.toMoney = function(decimals, decimal_sep, thousands_sep) { var n = this, c = isNaN(decimals) ? 2 : Math.abs(decimals), //se decimal é zero devemos levá-lo, isso significa que o usuário não quer mostrar qualquer decimal d = decimal_sep || '.', //se nenhum separador de decimal é passado usamos o ponto como separador de decimal padrão (que deve usar um separador de decimal) /* conforme [http://stackoverflow.com/questions/411352/how-best-to-determine-if-an-argument-is-not-sent-to-the-javascript-function] o caminho mais rápido para verificar se o parâmetro não definido é usar typeof valor === 'indefinido' em vez de fazer === valor indefinido. */ t = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, // se você não quiser usar um separador de milhares você pode passar cadeia vazia como valor thousands_sep sign = (n < 0) ? '-' : '', // extraindo o valor absoluto da parte inteira do número e convertendo a cadeia i = parseInt(n = Math.abs(n).toFixed(c)) + '', j = ((j = i.length) > 3) ? j % 3 : 0; return sign + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ''); } Number.prototype.toBrMoney = function(decimals) { return this.toMoney(decimals,',','.'); };
Testando o código acima
Nenhum comentário:
Postar um comentário