| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 09:12:58
|
carlos maia
JavaBaby
![[Avatar]](/images/avatar/22ed439655b43e856d12aac6c358ae2a.jpg)
Membro desde: 16/01/2009 11:32:04
Mensagens: 75
Offline
|
Bom dia pessoal,
gostaria de saber como eu posso transformar um double 0.333333333 em 0.3 e 0.166666666666 en 0.16 utilizando a linguagem JAVA
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 09:17:51
|
mauricioadl
GUJ Master
![[Avatar]](/images/avatar/0958560bd45062d115debadb6bca3183.png)
Membro desde: 10/05/2007 14:52:21
Mensagens: 1140
Offline
|
se nao tiver problemas em arredondar os valores, assim faz:
DecimalFormat df = new DecimalFormat("##.##;(00.00)");
System.out.println(df.format(0.333333333));
System.out.println(df.format(0.166666666666));
|
Seu problema foi resolvido? Por favor, edite seu primeiro post e adicione [RESOLVIDO] no título.
O forum agradece. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 10:38:49
|
evefuji
GUJ Ranger
Membro desde: 14/12/2007 22:37:17
Mensagens: 753
Offline
|
Pode usar o Math.round e o Math.floor, dependendo da sua "criatividade":
Ou, como é dízima, pode fazer assim:
Sinceramente, prefiro a primeira opção.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 12:00:25
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
Muito mais simples usar o BigDecimal.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 13:40:58
|
wellington.nogueira
GUJ Ranger
![[Avatar]](/images/avatar/00c1de56b1cbab48f9869c1460d70e76.png)
Membro desde: 11/08/2006 11:29:56
Mensagens: 914
Localização: Osasco-SP
Offline
|
Giulliano wrote:Muito mais simples usar o BigDecimal.
Concordo em partes. Lembrando que se o double pasado no parâmetro for resultado de cálculo, o mesmo pode estar distorcido e não representando dízima. Em caso de arredondamentos como citado (scale = 2) não vejo problemas, mas nunca se sabe...
Prefira que as operações matemáticas (soma, subtração, multiplicação e divisão) sejam realizadas pelo BigDecimal (entretanto, esse cálculo fica mais lento).
|
57 45 4C 4C 49 4E 47 54 4F 4E
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
"Se você acha que programar em Java com Swing é simples? Acredite em mim, não é!"
http://developmentforever.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 13:44:53
|
leopoldof
GUJ Master
Membro desde: 07/03/2008 07:40:45
Mensagens: 1012
Offline
|
para calculos com casas decimais, eu sempre uso bigdecimal, principalmente se for algo que mecha com o lado financeiro
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 13:46:44
|
Enadrov
Thread.start()
Membro desde: 20/07/2011 16:02:24
Mensagens: 34
Offline
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2011 14:01:10
|
jaboot
Virtual Machine Man
Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline
|
Giulliano wrote:Muito mais simples usar o BigDecimal.
++
O único problema de usar o BigDecimal é o custo.
Mas como as vezes o que mais importa no sistema são os valores ($$$), eu acho que vale a pena.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/12/2011 07:45:44
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
jaboot wrote:
Giulliano wrote:Muito mais simples usar o BigDecimal.
++
O único problema de usar o BigDecimal é o custo.
Mas como as vezes o que mais importa no sistema são os valores ($$$), eu acho que vale a pena.
jaboot ou wellington.nogueira
vocês saberiam responder o quanto mais lento é o BigDecimal para o Double. Por que se estamos falando de nanosegundos ou milisegundos, podemos descartar essa lentidão.
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/12/2011 08:33:10
|
jaboot
Virtual Machine Man
Membro desde: 01/07/2005 14:25:37
Mensagens: 749
Localização: São Paulo
Offline
|
Faz um loop-teste com os seus cálculos e vê a diferença. Eu sinceramente não sei quantos milisegundos vai dar de diferença.
This message was edited 1 time. Last update was at 16/12/2011 08:33:51
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/12/2011 09:01:32
|
wellington.nogueira
GUJ Ranger
![[Avatar]](/images/avatar/00c1de56b1cbab48f9869c1460d70e76.png)
Membro desde: 11/08/2006 11:29:56
Mensagens: 914
Localização: Osasco-SP
Offline
|
@Giulliano, a questão é que vc vai gerar overhead por passar a trabalhar com o BigDecimal. Em geral não deve influenciar mas tudo vai depender do volume de cálculos a serem realizados.
Entretanto, é muito comum utilizar valores flutuantes para tratar valores monetários e, menos comum, para valores de engenharia. E em ambos casos, a precisão tem maior importância/significância que a performance.
Se quiser saber a diferença, pode fazer como sugeriu o @jaboot mas faça o monitoramento acompanhado de um Profiler (Ex.: JVisualVM).
|
57 45 4C 4C 49 4E 47 54 4F 4E
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
"Se você acha que programar em Java com Swing é simples? Acredite em mim, não é!"
http://developmentforever.wordpress.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/12/2011 11:36:13
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline
|
jaboot wrote:Faz um loop-teste com os seus cálculos e vê a diferença. Eu sinceramente não sei quantos milisegundos vai dar de diferença.
legal pessoal...a ideia era só deixar bem claro que não vale a pena descartar bigdecimal, achando que ele prejudicaria a performance (salvo casos extermos). aproveitando sugiro a todos darem uma lida no post da caelum http://blog.caelum.com.br/arredondamento-no-java-do-double-ao-bigdecimal/ []'s a todos.
This message was edited 1 time. Last update was at 16/12/2011 11:36:51
|
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi
<UnTouChAbLe> |
|
|
 |
|
|