| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/04/2006 10:58:02
|
skyblue
JavaGuru
![[Avatar]](/images/avatar/c9082db941332fa8aaf90.gif)
Membro desde: 13/08/2003 08:12:36
Mensagens: 238
Localização: Belo Horizonte - MG
Offline
|
[color=blue]Oi pessoal !!! Estou desenvolvendo uma classe em que preciso de um gerador de números float aleatório mas como eu não conseguia controlar o número de casas decimais depois da virgula, resolvi criar uma.
Tem alguma forma de fazer isso sem gambiarra ? Porque eu pesquisei e não encontrei... para ter controle do número de casas eu tive que gerar números inteiros e concatenar com uma string pra depois transformar em float.
O problema maior é que ele não ta gerando corretamente, pelo menos quando leio a variável float o número, algumas vezes, o numero de casas decimais esta maior do que eu determinei. Alguem tem ideia de qual pode ser o problema ?
Aqui estão o meu construtor e o método:
Valeu pessoal !!!
Skyblue[/color]
|
"Para que o mal triunfe basta que os bons não façam nada"
Edmund Burke |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/04/2006 16:37:53
|
wcaquino
HelloWorld
Membro desde: 06/10/2004 14:19:24
Mensagens: 10
Offline
|
Olá skyblue,
Se vc utilizar a classe decimal format, vc vai poder controlar a quantidade de casas...
Nesse código aí a saída é 4.5000... se o número tiver mais casas decimais ele vai arredondar
Flws
|
O dinheiro é quase tudo, mas o quase tudo quase sempre é quase nada! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/04/2006 18:57:31
|
skyblue
JavaGuru
![[Avatar]](/images/avatar/c9082db941332fa8aaf90.gif)
Membro desde: 13/08/2003 08:12:36
Mensagens: 238
Localização: Belo Horizonte - MG
Offline
|
wcaquino wrote:Olá skyblue,
Se vc utilizar a classe decimal format, vc vai poder controlar a quantidade de casas...
Nesse código aí a saída é 4.5000... se o número tiver mais casas decimais ele vai arredondar
Flws
Oi, o problema é que eu não preciso imprimir ou manipular strings, meu problema é pra manipular float mesmo. Eu tenho que somar e multiplicar floats, so queria saber se teria jeito sem ter que converter pra string e depois pra float novamente.
Valeu
Skyblue
|
"Para que o mal triunfe basta que os bons não façam nada"
Edmund Burke |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/04/2006 19:08:08
|
David
JavaEvangelist
![[Avatar]](/images/avatar/77431ca7981f1f1483ae8a58bcbb6e0e.jpg)
Membro desde: 18/03/2005 13:10:33
Mensagens: 450
Localização: Natal/RN
Offline
|
Se você quiser que as casas decimais que estão sobrando sejam truncadas, e não arredondadas, você pode fazer algo assim:
1. Multiplique por 10^(numero de casas decimais)
2; Faça um cast para int.
3. Faça um cast para double
4. Divida por 10^(numero de casas decimais).
Exemplo: 4.78956 com três casas decimais.
1. 4.78956 * 10^3 = 4789.56
2. (int) 4789.56 = 4789
3. (double) 4789 = 4789.0
4. 4789.0 / 10^3 = 4.789
Com o DecimalFormat você iria obter 4.790, é só dar uma olhada no teste abaixo:
Dependendo das suas necessidades você decide o que usar.
|
David Pereira
Engenheiro de Computação - UFRN
Mestre em Engenharia Elétrica
Doutorando em Engenharia Elétrica |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/04/2006 20:01:24
|
skyblue
JavaGuru
![[Avatar]](/images/avatar/c9082db941332fa8aaf90.gif)
Membro desde: 13/08/2003 08:12:36
Mensagens: 238
Localização: Belo Horizonte - MG
Offline
|
Oi pessoal !!! Pelo que estou vendo David, esta seria a forma mais facil mesmo, mais tarde vou tentar refatorar minha classe para usar isso.
Mais fica a crítica, eu achei muito chato isso ja não estar implementado na jdk...
Valeu pessoal !!!
Skyblue
|
"Para que o mal triunfe basta que os bons não façam nada"
Edmund Burke |
|
|
 |
|
|