Para quem tiver interesse, mude de double para float.

Daniel Vermes

 Silvio DeMorais <[EMAIL PROTECTED]> wrote:

O seu programa nao tem erro algum, estah correto, e mostrando o resultado correto.
O "problema" eh na forma como os numeros reais sao representados dentro de um computador, como esses numeros sao convertidos de reais para binarios usando o padra IEEE 754, esse tipo de coisa.
A melhor forma de entender MESMO como esse negocio funciona eh ler o artigo
"What Every Scientist Should Know About Floating-Point Arithmetic"
http://docs.sun.com/db/doc/800-7895/6hos0aou4
 
Eh um artigo longo e complexo, mas depois de ler o cara realmente entende o porque desses numeros "errados" nos calculos com Double e Float.
 
Esse problema existe em todo o programa que rode em um computador que use o formato IEEE 754. Ateh onde eu sei, todos usam.
 
Soh para terminar, um exemplo interessante.
 
public class PareceUmMasNaoEh {
    public static void main(String []a)
    {
        double soma = 0.0;
        for ( int i = 0; i<10; i++)
        {
           soma += 0.1;
        }
        System.out.println(soma);
    }
}
 
 
 
 
 
 
 
----- Original Message -----
Sent: Monday, March 24, 2003 3:23 PM
Subject: [java-list] Soma com variável do tipo Double;

Boa tarde a todos!
 
Estou com um problema na soma de variáveis do tipo Double, segue abaixo código de exemplo:
 
import java.util.*;
 
public class StringDouble
{
 
 public StringDouble()
 {
 }
 
 public static void main(String args[])
 {
  double v1 = 7001.69 + 5000.23;
  
  System.out.println("Valor: " + v1);
 }
}
O resultado que imprimiu na tela foi :12001.919999999998 e não 12001.92.
 
Alguém já teve problema parecido?
 
**********************************************************************
Esta mensagem, incluindo seus anexos, tem carater confidencial e seu conteudo eh restrito ao destinatario da mensagem. Caso voce tenha recebido esta mensagem por engano, queira por favor retorna-la ao destinatario e apaga-la de seus arquivos. Qualquer uso nao autorizado, replicacao ou disseminacao desta mensagem ou parte dela eh expressamente probibido. A DBA nao eh responsavel pelo conteudo ou a veracidade desta informacao.
**********************************************************************



Yahoo! Mail
O melhor e-mail gratuito da internet: 6MB de espaço, antivírus, acesso POP3, filtro contra spam.

Responder a