Pessoal com vcs estao fazendo em relacao a campos tipo moeda?

18 respostas
marciofermino

Amigos mysql nao tem tipo moeda… estou ate baixando postgree

como vcs estao fazendo…

Meu cliente quer digitar no campo 1.234,23 e quer realizar calculos …e dai ??
Gostaria de opnioes

Obrigado.

18 Respostas

maquiavelbona

Se tiver diferença de Locale, NumberFormat e trabalhar em cima do Float.
Nada complicado, não é necessário um tipo moeda específico, mesmo porque moeda é algo que muda muito.

Até!

marciofermino

ta entendo. mais poderia me explicar
por exemplo o cliente quer digitar no campo
1.234,23

esse numero para o java nao é valido ou estou enganado:?
pq vou precisar realizar calculos com este valor

maquiavelbona

Pega essa String, usa o NumberFormat que vai transformá-lo num float válido e você faz a soma. Se quiser retornar na mesma forma, NumberFormat novamente. Nada complexo e nada que não esteja na busca do fórum.

Até!

marciofermino

amigo estou pesquisando no forum mais ainda nao achei nada que fosse extamente oque quero. vc tem o llink?

maquiavelbona

Procure por “numberformat moeda” que vai aparecer vários tópicos sobre ( eu pesquisei ), é só adaptar.

Até!

marciofermino
amigo fiz este codigo
float f = Float.parseFloat((String) textField1.getValue());

        Locale l = new Locale("pt", "BR");

        NumberFormat nf = NumberFormat.getCurrencyInstance(l);
        info(nf.format(f));

entao digite 1230.10
e ele me retornou R$ 1.230,10

ta. entendi
mais acontece que eu ja tenho o valor 1.230,10 nao entendi como vou transformar para 1230.10 para poder armazenar no mysql

maquiavelbona

Bom, agora que você aprendeu a usar o format(), você pode usar o parse() para pegar o R$ 1.234,00 e transformar em 1234.0 . E depois para armazenar no MySQL, terás um campo FLOAT ou DOUBLE e trabalharás no PreparedStatement com setFloat() ou setDouble(). Nada de outro mundo.

Até!

marciofermino

nossa amigao to ate agora para resolver isso…
vc teria um exemplo ?

Obrigado.;

Mauricio_Linhares

http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html

Henrik

use BigDecimal no lugar de float ou double

rdantas

Oi marciofermino,

Pelo que eu entendi vc quer uma mascara de edição para que no valor o cara vá digitando e os números já apareçam formatados, é isso?

Bom, se for, use o JTFormattedTextField,

MaskFormatter maskValor = null;
try{
    maskValor = new MaskFormatter("###.###,##");
    maskValor.setPlaceholderCharacter('_');
    
}catch(java.text.ParseException e){

e depois para instanciar o JTFormattedTextField use:

jTFvalor = new javax.swing.JFormattedTextField(maskValor);

espero ter ajudado,

Rodrigo.

marciofermino

BEM. DEIXA EU EXPLICAR

A APLICAÇÃO É PARA WEB
UTILIZO NETEBEANS Visual Web
MySQL

Para que o usuario ao digitar o valor ele formate. eu pensei em usar javaScript, bem ai resolvo o problema
mais acontece que quando o usuário digitar vai ficar assim:

1.234,10

eu não posso simplesmente pegar este valor e soma mais 100, por causa dos pontos e virgula ( ou não… ou estou errado ?)

Então penso que para realizar calculos preciso transformar para 1234.10

é isso mesmo ??? estou confuso…

Ou seja preciso de valores monetarios na aplicacao tanto no banco de dados… já andei pesquisando e parece que o mysql não tem campo monetário
então pensei em tratar o valor na tela para apresentar e tratar o valor para poder armazenar no banco.

Se eu usar postgres isso podera resolver… ou vai dar na mesma por causa do JAVA.

Não querendo comparar pq não da mesmo. Mais no Delphi eu digitava 1.234,10 … faria os calculos necessarios e no banco tb ficava 1.234,10…

OOóo meus deus por que tudo isso : rssss

Alguém poderia me dar um explicação.

Obrigado… preciso mesmo de ajuda

maquiavelbona

Ou você não leu ou fingiu que não leu. Você viu o retorno com format()? Agora veja qual é o retorno de um parse() e faça as contas com ele. E depois eu falei qual é o campo para ser usado no MySQL, não fique falando que não sabe ou não tem.

Caramba! Odeio ter que me repetir.

Até!

marciofermino

entao amigo eu fiz oque vc me falou mais da erro:

float n1 = 0;
        
        n1 = Float.parseFloat((String) textField1.getValue());
        
        textField2.setText(String.valueOf(n1));
maquiavelbona
Não gosto de por código pronto, mas aqui porque hoje estou com pouco saco de ficar tentando explicar para as pessoas procurarem.
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class TesteNUmero {

	public static void main(String[] args) {

		String valor = "R$ 1.234,00";
		Locale l = new Locale("pt", "BR");
		NumberFormat nf = NumberFormat.getCurrencyInstance(l);
		Number numero;
		try {
			numero = nf.parse(valor);
			double numeroNovo = numero.doubleValue() + 100;
			System.out.println("O novo valor é: " + nf.format(numeroNovo));
		} catch (ParseException e) {
			System.out.println("Erro em:");
			e.printStackTrace();
		}
	}
}

Até!

marciofermino

okay bem é isso mesmo…

agora para vc acabar de ficar bravo…

como eu faco para tirar o R$ … isso é feito pelo local tipo escolher outro pais ::?

eu outra

1,234.10 + 100 = 1,334.10

ele esta dando resultado 1.334,00 pq ??

marciofermino

bem … agora deu certo…

!!!
agora para tirar o R$ :

maquiavelbona

marciofermino:
okay bem é isso mesmo…

agora para vc acabar de ficar bravo…

como eu faco para tirar o R$ … isso é feito pelo local tipo escolher outro pais ::?

eu outra

1,234.10 + 100 = 1,334.10

ele esta dando resultado 1.334,00 pq ??


Primeiro, você pode pode retirar os dois primeiros caracteres como se estivesse trabalhando com uma String comum. Isso é básico e toda apostila básica tem.
Segundo, isso é notação inglesa. A vírgula representa separação de milhar e ponto representa separação decimal. No Brasil é inverso, então não tem o que se espantar, no COBOL tem o DECIMAL-POINT IS COMMA para mudar para o jeito “português” de se fazer, mas no java você trabalha com a notação inglesa.

Até!

Criado 19 de janeiro de 2008
Ultima resposta 20 de jan. de 2008
Respostas 18
Participantes 5