Funções para converter de moeda para float e vice-versa

Publicado por Marcone Gledson de Almeida 10/03/2008

[ Hits: 50.202 ]

Download funcoes_de_conversao.js




Função para converter uma string do formato moeda para float, e outra para conversão de float para moeda.

  



Esconder código-fonte

/*@file utils.js
@brief Conjunto de funções para tratamento dos dados
@author Marcone Gledson de Almeida
@date 2008
*/

      /*   @brief Converte uma string em formato moeda para float
      @param valor(string) - o valor em moeda
      @return valor(float) - o valor em float
   */
   function converteMoedaFloat(valor){
      
      if(valor === ""){
         valor =  0;
      }else{
         valor = valor.replace(".","");
         valor = valor.replace(",",".");
         valor = parseFloat(valor);
      }
      return valor;

   }
   
   /*   @brief Converte um valor em formato float para uma string em formato moeda
      @param valor(float) - o valor float
      @return valor(string) - o valor em moeda
   */
   function converteFloatMoeda(valor){
      var inteiro = null, decimal = null, c = null, j = null;
      var aux = new Array();
      valor = ""+valor;
      c = valor.indexOf(".",0);
      //encontrou o ponto na string
      if(c > 0){
         //separa as partes em inteiro e decimal
         inteiro = valor.substring(0,c);
         decimal = valor.substring(c+1,valor.length);
      }else{
         inteiro = valor;
      }
      
      //pega a parte inteiro de 3 em 3 partes
      for (j = inteiro.length, c = 0; j > 0; j-=3, c++){
         aux[c]=inteiro.substring(j-3,j);
      }
      
      //percorre a string acrescentando os pontos
      inteiro = "";
      for(c = aux.length-1; c >= 0; c--){
         inteiro += aux[c]+'.';
      }
      //retirando o ultimo ponto e finalizando a parte inteiro
      
      inteiro = inteiro.substring(0,inteiro.length-1);
      
      decimal = parseInt(decimal);
      if(isNaN(decimal)){
         decimal = "00";
      }else{
         decimal = ""+decimal;
         if(decimal.length === 1){
            decimal = decimal+"0";
         }
      }
      
      
      valor = "R$ "+inteiro+","+decimal;
      
      
      return valor;

   }

Scripts recomendados

Banner Rotativo em JavaScript grava click no Mysql.

Log JavaScript cross browser

Jogo da Senha

xCalc2

Calculadora Simples


  

Comentários
[1] Comentário enviado por M4iir1c10 em 21/03/2008 - 10:21h

Desculpa a minha ignorancia mais esse codigo-fonte esta com cara de Javascript e nao shell-script...
Caso eu esteja certo nao seria legal da sua parte escrever que se trata de um javascript e como ele deve ser invocado pelo html?
Lembre-se nem todos conhecem as linguagens de script e pensam que um simples copiar e colar resolve qualquer problema...

[2] Comentário enviado por baxman em 21/03/2008 - 20:01h

Mauricio,

Este código não tem nada haver com JavaScript é também creio que não dá para transparecer isso.
Primeiro porque na primeira linha do script aparece o nome do arquivo com a extensão js que é utilizada para os arquivos em Javascript. Segundo, se você observar bem o código perceberá que tem funções internas especificas do JS como comparações que são bastante diferentes em Shell Script.
Agora para "invocar" o arquivo é só escrever a seguinte linha entre as tags <head></head> do seu arquivo HTML.
<script src="utils.js" type="javascript"/>

[3] Comentário enviado por M4iir1c10 em 22/03/2008 - 02:14h

Essa funcao:
function converteMoedaFloat(valor){

if(valor === ""){
valor = 0;
}else{
valor = valor.replace(".","");
valor = valor.replace(",",".");
valor = parseFloat(valor);
}
return valor;

}

e a funcao:
function converteFloatMoeda(valor)

no meu entendimento e javascript puro! Caso seja shell script as variaveis seriam $variavel e nao valor=x ou seja nessa ultima linha do converteMoedaFloat(valor) a variavel deveria ser:

return $valor;

e nao return valor;


[4] Comentário enviado por lohandus em 27/05/2008 - 17:11h

Olá, a função converteFloatMoeda parece ter um bug.
Na linha "decimal = parseInt(decimal);" se a variável decimal for por exemplo uma string "05", ela passa a valer 5, correto? Então se o número a ser convertido for por exemplo 12.05, ele passa a valer 12,50

[5] Comentário enviado por dogma em 27/01/2019 - 21:08h


[4] Comentário enviado por lohandus em 27/05/2008 - 17:11h

Olá, a função converteFloatMoeda parece ter um bug.
Na linha "decimal = parseInt(decimal);" se a variável decimal for por exemplo uma string "05", ela passa a valer 5, correto? Então se o número a ser convertido for por exemplo 12.05, ele passa a valer 12,50


Tive o mesmo problema mas consegui encontrar e corrigir é um pequeno erro dentro do ultimo 'if' onde o trecho esta 'decimal = decimal+"0";' e deve ser substituído por 'decimal = "0"+decimal;'. vlw


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts