Formatar "0,00"

4 respostas
R

Oi pessoal … alguem sabe como posso formatar um valor double para “0,00” (a saida pode ser em formato String mesmo)

Se o valor for Double 60.28031970346346, gostaria de exibir 60,28
ou se for 60.0 gostaria de exibir 60,00

Obrigado!!

Rodrigo.

4 Respostas

G

Voce deve usar DecimalFormat();
Exemplo:

DecimalFormat ad = new DecimalFormat(“0.00”);

vc deve importar java.awt.DecimalFormat;

Tenta ai. Se der certo da um toque…

R

Oi gollun... cara infelizmente eu não vi o seu post antes e acabei criando um metodo que faça essa formatação... mas de qualquer forma muito obrigado hein cara!!
Segue o metodo caso alguem precise e tal...

Abraço!!

public String formataMoeda(String valor) { // entrada 20.5

        String antes = valor.substring(0,valor.indexOf('.')); //recebe antes ponto "20"
              
        String depois = valor.substring(valor.indexOf(".")+1); //recebe após ponto "5"
      
               depois += "00"; // ("5"+"00") fica como 500
              
        depois = depois.substring(0,2); //recupera dois primeiros carac de 500 -> 50
       
         valor = antes+","+depois;  // valor = "20" + "," + "50"
         
       return valor; // 20,50
    }
B

Nao reinvente a roda, amigo.

R

veja bem... não é questão de reinventar a roda... eu procurei desesperadamente por um metodo que me ajudasse... não encontrei nada...achei que não existisse... ai acabei fazendo eu mesmo...felizmente eu vi que vc postou e agora posso substitui-lo.

Mas pensando bem esse metodo que fiz foi realmente interessante pois com ele eu aprendo mais levando em conta que sou iniciante!!Esse metodo que fiz tambem pode ser reaproveitado para outras ocasiões
E depois se todos pensassem assim não existiriam frameworks no mercado como Struts por exemplo... pq ninguem quis reinventar a teoria de separar a logica de negocios da camada de apresentação...asei lá esse é meu modo de pensar... alias procurei um metodo que validasse moeda 0,00 e não encontrei nada!!
logo pode ser que eu tenha reinventado a roda mais uma vez!!

public boolean validaMoeda(String valor) { //valida até 999.999,99
      boolean validar = true;
      int len = valor.length(); // retorna qtde caracters
      int ponto = valor.indexOf('.'); // retorna 1 se existir ponto e -1 se não existir
      
      if (ponto != -1){ //se existir ponto 
          System.out.println("não use . ");         
	  validar = false;   //termina o metodo       
      }
      else{ // se não existir ponto verificaremos a virgula
          int virgula = valor.indexOf(','); // retorna 1 se existir -1 se não existir      
          if (virgula != -1){ //se existir...
              System.out.println("virgula digitada");
              if (len>9){ //verificamos qtde de caracters digitados
                  System.out.println("valor invalido > 999999,99");		
 	                    validar = false; // e se for maior q 9 (pq inclui a virula) termina o metodo
              }
              else{ //se não se qtde caracters for valida
                  try {
                      int posVirg = (len - 3); //retorna posição da virgula
                      char virg = valor.charAt(posVirg); // retorna o caracter posicionado na virgula
                      if (virg != ',') { // se esse caracter não for uma virgula
                          System.out.println("virgula não esta posicionada na casa decimal correta");
                          validar = false; //termina o metodo
                      }
                      else{ //senão se  esse caracter for de fato uma virgula
                          String antes = valor.substring(0,valor.indexOf(',')); //recebe conteudo antes virgula        
	                  String depois = valor.substring(valor.indexOf(",")+1); //recebe conteudo após virgula
                          Integer.parseInt(antes); // valida pra ver se é um numero
		          Integer.parseInt(depois);
                      }
                  }
                  catch (Exception e) { //caso não for numerico, ocorrera um erro e esse catch trata o valor não numerico
                      validar = false;
                  }
                   finally{
                       return validar; // retornando o status false do boolean
                   }
                  
              }
              
          }
          else{ // sem virgulas
              if (len>6){ // sem virgulas só é possivel uma entrada menor do valor
                  System.out.println("valor invalido > 999999");
                  validar = false;
              }
              else{
                  try {
                      Integer.parseInt(valor); //sem virgula basta uma conferencia pra ver se o valor é inteiro
                  }
                  catch (Exception e) { //caso não for numerico, ocorrera um erro e esse catch trata o valor não numerico
                      validar = false;
                  }
                  finally{
                      return validar; // retornando o status booleano 
                  }
              }
          }          
      }
      return validar;     //se não entrou em nenhum catch temos que exibir a saída dos ifs true ou false
  }
Criado 1 de setembro de 2006
Ultima resposta 2 de set. de 2006
Respostas 4
Participantes 3