Pessoal.
Gostaria só de acrescentar algo e corrigr uma afirmação.
A correção.
Não é o Java que tem problema de arredondamento, e sim o padrão de
representação de número em ponto flutuante (float e double em Java). O
padrão utilizado pela maioria (senão todas) das CPU e linguagens é o
padrão IEEE 754 que apresenta problemas na representaçaõ de certos
números reais.
Os detalhes.
O problema existe em Pascal (delphi) com o tipo REAL, em banco de
dados com o tipo REAL, em COBOL mainframe com o tipo COMP, em C e C++
com os tipos float e double, em C# também deve ter o mesmo problema e
assim por diante.
O problema é com o padrão e não com a linguagem.
Para maiores informações.
http://en.wikipedia
--
José Augusto Martins Nieviadonski
Sun Certified Associate for Java Platform, Standard Edition
Especialista Técnico II - FX and Trade Systems - HSBC Bank Brasil S.A.
Professor - Pós-graduação Java - Faculdades SPEI
jose.augusto.
jaugusto@spei.
Citando Pablo Souza <pvrsouza@gmail.
> É....realmente tem problemas...
> Vou utilizar esta classe mesmo!!
>
> Grande abraço!!
>
>
>
> 2009/11/9 db <dbconrado@gmail.
>
>> Cara,
>>
>> o Java tem problemas de arredondamento. Utilize a classe BigDecimal ao
>> invés
>> de double.
>>
>> HTH
>> db
>>
>> 2009/11/8 Pablo Souza <pvrsouza@gmail.
>>
>> >
>> >
>> > Srs,
>> >
>> > Está acontende uma coisa estranha em meu código. Estou fazendo um
>> somatório
>> > de dados do tipo double em uma função e quando retorno o valor, este
>> valor
>> > aparece com um decimal que não deveria existir. Por exemplo:
>> >
>> > O NORMAL: 2.0 + 2.0 = 4.0
>> > *O QUE ACONTECE: 2.0 + 2.0 = 4.01*
>> >
>> > Segue meu código:
>> >
>> > *FUNÇÃO:*
>> > public static double[] somaDias(double email[][], int qtdLinhas, int
>> > qtdColunas) {
>> > double somaDias[] = new double[qtdColunas]
>> > for (int y = 0; y < qtdColunas; y++) {
>> > for (int x = 0; x < qtdLinhas; x++) {
>> > somaDias[y] = (email[x][y] + somaDias[y])
>> > }
>> > }
>> > return somaDias;
>> > }
>> >
>> > RETORNO:
>> > //bloco que exibe os somatórios
>> > somaDias = funcoesMatematicas.
>> > indice, qtdDias);
>> > for (int y = 0; y < somaDias.length; y++) {
>> > Fjalp.setCursorPosi
>> > colunaCadastroValor
>> > System.out.print(
>> > DecimalFormat(
>> > colunaCadastroValor = colunaCadastroValor + 6;
>> > }
>> >
>> > Agradeço a atenção!
>> >
>> > Abraços!
>> > --
>> > Atenciosamente,
>> >
>> > Pablo Souza
>> > Tel.: (71) 9983-7775
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>> >
>> >
>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>> ------------
>>
>> Para sair da lista, envie email para: java-br-unsubscribe
>> Para upload/download de arquivos:
>> http://www.yahoogro
>>
>>
>>
>
>
> --
> Atenciosamente,
>
> Pablo Souza
> Tel.: (71) 9983-7775
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br







0 comentários:
Postar um comentário