| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 13:12:57
|
Adriano Almeida
JavaEvangelist
![[Avatar]](/images/avatar/080eb9c2c128e1337fcc84d8680f404c.jpg)
Membro desde: 13/09/2006 15:29:34
Mensagens: 386
Offline
|
Desde o começo desse ano, começou um trabalho para desenvolver uma nova especificação no Java para auxiliar o trabalho com valores monetários, que é a JSR 354 - Money and Currency API. A especificação, que possui como líder o banco Credit Suisse, membro do JCP, também possui como um dos seus membros de Expert Group o Stephen Colebourne, que participou de outras especificações, como a Date and Time API (JSR 310), junto dos brasileiros Michael Nascimento e Fabio Kung.
Segundo a descrição da especifição:
Provides an API for representing, transporting, and performing comprehensive calculations with Money and Currency.
Vale lembrar que essa especificação está em estágio bastante inicial, mas não deixa de ser uma boa notícia para empresas que trabalham com sistemas financeiros e cálculos em moedas.
Para saber mais sobre a especificação, a página dela é http://jcp.org/en/jsr/detail?id=354
|
Twitter: @adrianoalmeida7
http://ahalmeida.com
http://blog.caelum.com.br

|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 13:38:54
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Excelente notícia! Já perdí as contas de quantos lugares eu ví em que Double era usado para realizar cálculos com dinheiro... Resta esperar que as pessoas usem, de fato, a API nova.
This message was edited 1 time. Last update was at 17/01/2012 13:39:25
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 14:09:02
|
alias
Virtual Machine Man
Membro desde: 11/06/2007 11:09:34
Mensagens: 596
Offline
|
asaudate wrote:Excelente notícia! Já perdí as contas de quantos lugares eu ví em que Double era usado para realizar cálculos com dinheiro... Resta esperar que as pessoas usem, de fato, a API nova.
Tem razão, certa vez trabalhei em uma consultoria prestando serviço em um banco, e os "arquitetos" do lugar criaram uma classe wrapper de Float para operações com moeda. Genial!
Amigos me perdoem a ignorancia, mas nao é um pouco bizarro ter uma especificação para tratar calculo de moedas? Talvez seja miopia minha mas voces conseguem enxergar muitas variacoes de implementação para fazer isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 14:16:07
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
alias wrote:
asaudate wrote:Excelente notícia! Já perdí as contas de quantos lugares eu ví em que Double era usado para realizar cálculos com dinheiro... Resta esperar que as pessoas usem, de fato, a API nova.
Tem razão, certa vez trabalhei em uma consultoria prestando serviço em um banco, e os "arquitetos" do lugar criaram uma classe wrapper de Float para operações com moeda. Genial!
Amigos me perdoem a ignorancia, mas nao é um pouco bizarro ter uma especificação para tratar calculo de moedas? Talvez seja miopia minha mas voces conseguem enxergar muitas variacoes de implementação para fazer isso?
BigDecimal ou BigInteger ou long resolvem o problema. O caso é que converter qualquer um dos três em moeda requer algumas artimanhas. O próprio Martin Fowler catalogou um pattern chamado Money (está no livro Patterns of Enterprise Application Architecture).
[]'s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 15:10:52
|
Rodrigo Vieira Pinto
JavaEvangelist
![[Avatar]](/images/avatar/e7e69cdf28f8ce6b69b4e1853ee21bab.jpg)
Membro desde: 15/07/2004 11:05:05
Mensagens: 354
Localização: São Paulo
Offline
|
Excelente notícia. Tava mais do que na hora.
Acredito que essa JSR seja tão importante quanto a de datas. São conceitos que aplicamos em tudo quanto é sistema, e em cada um fazendo uma solução caseira.
Achei interessante também que o líder da especificação seja um banco. Instituições financeiras são mais do que interessadas numa API dessas, e nada melhor do que uma delas pra dizer o que deve ser feito.
Tomara que vingue!
|
"Ser o segundo é ser o primeiro dos perdedores" - Ayrton Senna
"Eu vou dá 10 pau!!" - Aracy de Almeida
Nova dupla sertaneja: Waterfall e Procedural. Pra começar, é sertanejo (ARGH!)
"Bem, dizia eu que a aritmética..." - Prof. Girafales
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 15:30:17
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
asaudate wrote:
BigDecimal ou BigInteger ou long resolvem o problema.
[]'s
Mais ou menos - na verdade, seria mais eficiente se houvesse um tipo como o System.Decimal (a.k.a. "decimal") do C#, que é um "Ponto flutuante decimal" que é mais eficiente que o velho e bom BigDecimal. (A propósito, passando os parâmetros adequados para o construtor do java.math.BigDecimal, ele se comporta como um "Ponto Flutuante Decimal", mas isso deveria ser tratado por uma classe separada, para evidenciar o fato que ele nesse caso tem precisão limitada. )
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 15:36:28
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
entanglement wrote:
asaudate wrote:
BigDecimal ou BigInteger ou long resolvem o problema.
[]'s
Mais ou menos - na verdade, seria mais eficiente se houvesse um tipo como o System.Decimal (a.k.a. "decimal") do C#, que é um "Ponto flutuante decimal" que é mais eficiente que o velho e bom BigDecimal. (A propósito, passando os parâmetros adequados para o construtor do java.math.BigDecimal, ele se comporta como um "Ponto Flutuante Decimal", mas isso deveria ser tratado por uma classe separada, para evidenciar o fato que ele nesse caso tem precisão limitada. )
Não entendí muito bem essa parte, seria sacrificar a precisão em favor da eficiência?
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 15:59:49
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
A menos que você esteja lidando com dólares zimbabuanos (que foram abolidos no Zimbábue em 2009) - onde você poderia ter quantias que eram de centenas de trilhões, acho que você não precisa usar mais que 20 casas nos cálculos monetários.
This message was edited 1 time. Last update was at 17/01/2012 16:00:24
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 16:09:37
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
entanglement wrote:A menos que você esteja lidando com dólares zimbabuanos (que foram abolidos no Zimbábue em 2009) - onde você poderia ter quantias que eram de centenas de trilhões, acho que você não precisa usar mais que 20 casas nos cálculos monetários.

E a representação de todo o dinheiro em circulação no mundo, convertido em yens ? =)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 16:21:14
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
alias wrote:Amigos me perdoem a ignorancia, mas nao é um pouco bizarro ter uma especificação para tratar calculo de moedas? Talvez seja miopia minha mas voces conseguem enxergar muitas variacoes de implementação para fazer isso?
Há trocentas implementações disso, o problema é a maioria usar a implementação com float e double, sem saber dos riscos. Padronizar para uma solução, neste caso, daria mais visibilidade, e corretude para o mundo Java.
Edit: O Bitcoin, na implementação atual, tem até 8 casas decimais, podendo acumular até 21 milhões. Quantias grandes
This message was edited 1 time. Last update was at 17/01/2012 16:24:50
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 19:36:35
|
Adelar
GUJ Master
![[Avatar]](/images/avatar/4ad38ecf2884a47a5efa657f3358e635.jpg)
Membro desde: 31/10/2008 10:07:36
Mensagens: 1237
Localização: Cascavel
Offline
|
Apesar de simples o problema decorrente de uma implementação feita com os tipos errados pode ser complicado de resolver... experiência própria. Espero que tendo um padrão para isso vai force o pessoal a implementar da maneira certa!
|
"Errando e aprendendo com os bugs"
http://www.cajuscript.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 20:33:36
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Bruno Laturner wrote:
alias wrote:Amigos me perdoem a ignorancia, mas nao é um pouco bizarro ter uma especificação para tratar calculo de moedas? Talvez seja miopia minha mas voces conseguem enxergar muitas variacoes de implementação para fazer isso?
Há trocentas implementações disso, o problema é a maioria usar a implementação com float e double, sem saber dos riscos. Padronizar para uma solução, neste caso, daria mais visibilidade, e corretude para o mundo Java.
Edit: O Bitcoin, na implementação atual, tem até 8 casas decimais, podendo acumular até 21 milhões. Quantias grandes 
Você acha 21 milhões grande? O Faustão ganha mais que isso em menos de um ano...
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 23:07:43
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
asaudate wrote:Você acha 21 milhões grande? O Faustão ganha mais que isso em menos de um ano...
21 mi é peixe pequeno, 2 quatrilhões e 100 trilhões que é o bicho.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/01/2012 23:14:20
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Ja não era sem tempo!Uma padronização facilitara(e muito) a nossa vida.
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2012 07:54:00
|
Gustavo Marques
Thread.start()
![[Avatar]](/images/avatar/158a99d831c8cc639de57ba04fc1187b.jpg)
Membro desde: 25/10/2010 15:13:58
Mensagens: 49
Localização: Goiânia
Offline
|
Sim, também vejo a padronização como um grande benefício. É lógico que dá para trabalhar da maneira atual, mas cada um faz do seu jeito, ou usa double, big, classe wrapper, vira uma salada.
|
programador.gustavo@gmail.com |
|
|
 |
|
|