Bug no calculo matematico!

Olhe, nao sei se é fato isto, mas acredito que encontrei um bug nos calculos que a JVM faz, não sei como…

Rodem o seguinte código e me expliquem por gentileza :shock:

[code] public static void main(String[] args) {
for(int x = 0; x < 10 ; x++) {
position += speed;
System.out.println(position);
}
}

static float position = 0f;
static float speed = 0.02f;[/code]

Estou simplesmente sem o que dizer. por que acontece isso ?

Não é bug, é questão de precisão - o armazenamento de valores em variáveis de ponto flutuante não é 100% fidedigno. Use double para ganhar um pouco mais de precisão, ou BigDecimal para ter precisão total.

Caramba :shock: :shock: :shock:
que explicacao em ViniGodoy , só nao postei naquele topico pra nao reupar, mas OMG! rsrs

pra quem nao entrou no topico, vou dar um quote

Se você olhar os meus favoritos, vai ver uma série enorme de tópicos onde eu dei explicações detalhadas como essa nos mais diversos assuntos…
As vezes a gente tem tempo, paciência, ou explica tantas vezes a mesma coisa, que resolve caprichar e deixar um link à mão para quando a pergunta vier novamente. :slight_smile:

Eu sempre defendi a criação de um “Java FAQ”, similar ao C++ Faq Lite