Vc pode fazer assim:
int numero = Integer.parseInt ("123,05");
O Double.parseDouble () também daria certo não é? Creio que sua implementação leva em conta os dois separadores "ponto" e "vírgula".
[]s
Fireman
Frederico Guedes Pereira wrote:
> Gustavo,
>
> Também não, exatamente pela imprecisão na representação binária de
> números decimais em ponto flutuante.
>
> Fred
>
> Em 26/04/07, *Gustavo Cavalcanti * <xgu...@gmail.com
> <mailto:xgu...@gmail.com>> escreveu:
>
> O Double.parseDouble () também daria certo não é? Creio que sua
> implementação leva em conta os dois separadores "ponto" e "vírgula".
> []'s
>
>
>
> Em 25/04/07, * Danillo Cesar* <danil...@gmail.com
> <mailto:danil...@gmail.com>> escreveu:
>
> Ok, entendi o seu problema.
>
> Flw!!!
>
>
> On 4/25/07, *Frederico Guedes Pereira* <
> fredgued...@gmail.com
> <mailto:fredgued...@gmail.com>> wrote:
>
> Danillo,
>
> O problema é que quando vc tenta converter um número na
> base decimal para um número double ou float, isso pode
> gerar uma imprecisao, pois a conversao pode produzir uma
> dízima periodica no número binário. Ex (hipotetico): o
> número " 2.34" em decimal pode produzir uma dízima quando
> convertido, isso porque sua versao em binário não é
> precisa, o binário lá por baixo pode ser na verdade
> 2.3399999. Ou seja, nao dá para converter 2.34 em binário
> sem perder precisao. Esse erro vai se acumulando e pode
> produzir uma diferenca enorme quando o valor representa
> dinheiro! Float e Double nao devem ser usados para
> representar dinheiro. Daí que eu preciso converter o
> número no string direto para o BigDecimal, sem passar por
> Double ou Float.
>
>
> Fred
>
> Em 25/04/07, *Danillo Cesar* < danil...@gmail.com
> <mailto:danil...@gmail.com>> escreveu:
>
> Se os numeros passados na GUI forem só decimais então:
>
> double numero = Integer.parseDouble ("123,05");
>
> BigDecimal b = new BigDecimal(numero);
>
> Danillo
>
>
>
> On 4/25/07, *Frederico Guedes Pereira* <
> fredgued...@gmail.com
> <mailto:fredgued...@gmail.com>> wrote:
>
> Danillo,
>
> Esse parseInt aí gera uma exceção, nao? O número
> no string não é inteiro.
>
> Fred
>
> Em 25/04/07, *Danillo Cesar* <
> danil...@gmail.com
> <mailto:danil...@gmail.com>> escreveu:
>
> Vc pode fazer assim:
>
> int numero = Integer.parseInt ("123,05");
> BigDecimal b = new BigDecimal(numero);
>
> Danillo
>
>
> On 4/25/07, * Frederico Guedes Pereira *
> <fredgued...@gmail.com
> <mailto:fredgued...@gmail.com>> wrote:
>
> Boa!
>
> Acabei fazendo de uma maneira mais complicada:
>
> public static void main(String[] args) {
> String numero = "123,56";
> NumberFormat nf =
> NumberFormat.getInstance();
> try {
> Number n = nf.parse(numero);
> BigDecimal b = new
> BigDecimal(n.toString());
> System.out.println("Number: "
> + n);
> System.out.println("Big
> Decimal:" + b);
> } catch (ParseException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> }
>
> O seu é muito mais simples e eficiente!
>
> Fred
>
> Em 25/04/07, *Sebastião Júnior*
> <panm...@gmail.com
> <mailto:panm...@gmail.com> > escreveu:
>
> Fred,
>
> tenta assim: BigDecimal num = new
> BigDecimal("2,3".replace(",","."));
>
> talvez precise de validação, mas resolve.
>
> --
> Sebastião E. P. Rabelo Júnior
> http://www.compose.ufpb.br/~sebastiao
> <http://www.compose.ufpb.br/%7Esebastiao>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> >
Ao invés de utilizar os construtores da classe é melhor utilizar os
seus factory methods (valueOf). Como BigDecimal é uma classe immutable
usando tais métodos você permite que a classe reuse alguns desses
objetos através de cache, pool, etc....
Qualquer dúvida é só olhar: http://java.sun.com/javase/6/docs/api/java/math/BigDecimal.html
Abraços,
André Figueiredo.
On 26 abr, 13:48, "Frederico Guedes Pereira"
<fredguedespere...@gmail.com> wrote:
> Sim! :-)
> Acebi adotando minha solucao, pois é mais rigorosa na hora de impedir
> valores malucos (tais como 1.345.67). Agora é o problema do Log4J...eheheheh
>
> Até o proximo bug...
>
> Fred
>
> Em 26/04/07, Daniel Lacet de Faria Fireman <danielfire...@gmail.com>
> escreveu:
>
>
>
> > E aí Fred, problema resolvido ?
>
> > []s
> > Fireman
>
> > Frederico Guedes Pereira wrote:
> > > Gustavo,
>
> > > Também não, exatamente pela imprecisão na representação binária de
> > > números decimais em ponto flutuante.
>
> > > Fred
>
> > > Em 26/04/07, *Gustavo Cavalcanti * <xgu...@gmail.com
> > > <mailto:xgu...@gmail.com>> escreveu:
>
> > > O Double.parseDouble () também daria certo não é? Creio que sua
> > > implementação leva em conta os dois separadores "ponto" e "vírgula".
> > > []'s
>
> > > Em 25/04/07, * Danillo Cesar* <danillo...@gmail.com
> > > <mailto:danillo...@gmail.com>> escreveu:
>
> > > Ok, entendi o seu problema.
>
> > > Flw!!!
>
> > > On 4/25/07, *Frederico Guedes Pereira* <
> > > fredguedespere...@gmail.com
> > > <mailto:fredguedespere...@gmail.com>> wrote:
>
> > > Danillo,
>
> > > O problema é que quando vc tenta converter um número na
> > > base decimal para um número double ou float, isso pode
> > > gerar uma imprecisao, pois a conversao pode produzir uma
> > > dízima periodica no número binário. Ex (hipotetico): o
> > > número " 2.34" em decimal pode produzir uma dízima quando
> > > convertido, isso porque sua versao em binário não é
> > > precisa, o binário lá por baixo pode ser na verdade
> > > 2.3399999. Ou seja, nao dá para converter 2.34 em binário
> > > sem perder precisao. Esse erro vai se acumulando e pode
> > > produzir uma diferenca enorme quando o valor representa
> > > dinheiro! Float e Double nao devem ser usados para
> > > representar dinheiro. Daí que eu preciso converter o
> > > número no string direto para o BigDecimal, sem passar por
> > > Double ou Float.
>
> > > Fred
>
> > > Em 25/04/07, *Danillo Cesar* < danillo...@gmail.com
> > > <mailto:danillo...@gmail.com>> escreveu:
>
> > > Se os numeros passados na GUI forem só decimais então:
>
> > > double numero = Integer.parseDouble ("123,05");
>
> > > BigDecimal b = new BigDecimal(numero);
>
> > > Danillo
>
> > > On 4/25/07, *Frederico Guedes Pereira* <
> > > fredguedespere...@gmail.com
> > > <mailto:fredguedespere...@gmail.com>> wrote:
>
> > > Danillo,
>
> > > Esse parseInt aí gera uma exceção, nao? O número
> > > no string não é inteiro.
>
> > > Fred
>
> > > Em 25/04/07, *Danillo Cesar* <
> > > danillo...@gmail.com
> > > <mailto:danillo...@gmail.com>> escreveu:
>
> > > Vc pode fazer assim:
>
> > > int numero = Integer.parseInt ("123,05");
> > > BigDecimal b = new BigDecimal(numero);
>
> > > Danillo
>
> > > On 4/25/07, * Frederico Guedes Pereira *
> > > <fredguedespere...@gmail.com
> > > <mailto:fredguedespere...@gmail.com>> wrote:
>
> > > Boa!
>
> > > Acabei fazendo de uma maneira mais
> > complicada:
>
> > > public static void main(String[] args) {
> > > String numero = "123,56";
> > > NumberFormat nf =
> > > NumberFormat.getInstance();
> > > try {
> > > Number n = nf.parse(numero);
> > > BigDecimal b = new
> > > BigDecimal(n.toString());
> > > System.out.println("Number: "
> > > + n);
> > > System.out.println("Big
> > > Decimal:" + b);
> > > } catch (ParseException e) {
> > > // TODO Auto-generated catch
> > block
> > > e.printStackTrace();
> > > }
>
> > > }
>
> > > O seu é muito mais simples e eficiente!
>
> > > Fred
>
> > > Em 25/04/07, *Sebastião Júnior*
> > > <panmor...@gmail.com
> > > <mailto:panmor...@gmail.com> > escreveu: