| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 09:59:03
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Bom dia pessoas,
estou passando pela seguinte situação:
preciso calcular um valor , só que na hora de instanciar
um Float, o retorno está me trazendo um valor que não é o correto.
Ex.:
Float f = new Float("60000000000");
System.out.println(f.doubleValue());
Double d = new Double("60000000000");
System.out.println(d);
==========================
Saída:
6.0000002048E10
6.0E10
Só que não posso mudar o atributo pra Double,
será que existe uma forma de o resultado sair sem esse "lixo" numérico?
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 10:12:22
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline
|
vc pode formatar o numero.
de uma pesquisada no forum que vc vai achar exemplos.
no javaalmac tmb tem exemplos de formatação de numeros.
[]'s
|
João Bier
Desenvolvedor Java |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 10:15:41
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
mas o que ocorre não é isso...
eu já formato , mas ele ainda continua saindo com o valor contendo
o lixo de aproximação... isso no Float, mas não posso mudar pra Double.
alguém sabe??
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 11:30:50
|
Akila
JavaBaby
![[Avatar]](/images/avatar/36a1694bce9815b7e38a9dad05ad42e0.jpg)
Membro desde: 24/05/2003 20:34:00
Mensagens: 76
Localização: Belo Horizonte
Offline
|
Caro colega que não que lixo no float.
Testa fazer o seguinte teste.. no lugar onde vc instancia o seu float, modifique da seguinte forma:
ex.:
DE: new Float(6000);
PARA: new Float(6000F);
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 12:01:50
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
Caro colega Akila,
independe de f , o que aconteceu foi que o valor é grande demais
para um Float, que suporta no máximo 32bits...
Então vou ter que mudar tudo pra Double, que suporta 64bits
Valor:
60000000000 Decimal
110111111000010001110101100000000000 Binario (36 bits > limite )
Aí dá esse erro!
De qq forma valeu pela ajuda!
O engraçado é que o JAVA tira os bits do seu número, sem avisar nada,
sem lançar nenhum runtimeException....
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 12:38:45
|
brlima
Moderador
![[Avatar]](/images/avatar/fc2c7c47b918d0c2d792a719dfb602ef.png)
Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline
|
Tenta usar o BigDecimal pra esses calculos se precisar de muita precisão.
|
Bruno R. Lima
-------------------------------------------
flickr :: twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 12:52:05
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
BigDecimal?
Como eu faria ?
Tem algum exemplo?
Valeu brlima!
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 12:54:47
|
brlima
Moderador
![[Avatar]](/images/avatar/fc2c7c47b918d0c2d792a719dfb602ef.png)
Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline
|
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html
|
Bruno R. Lima
-------------------------------------------
flickr :: twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2005 14:00:16
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Dentro da medida do possível, evite usar Float ou float. A economia de bytes em 95% das vezes não compensa os problemas de precisão (float tem apenas 4 bytes = 32 bits e sua precisão é de muitos poucos bits, se não me engano apenas 23). As contas não são feitas mais rapidamente - o hardware dos PCs comuns normalmente faz conta com 80 bits internamente.
Normalmente use double, long, BigDecimal etc (dependendo do que você está fazendo).
|
|
|
 |
|
|