Aparentes erros com ponto flutuante
O que aparenta ser um erro, será mesmo?
Na imagem seguinte, saliento os cálculos, em que supostamente o resultado está impreciso:
O programa, tendo por base o ponto 1, e diminuindo no eixo dos x 10 metros, deveria apresentar uma coordenada x para o ponto 2 de -10.00000 no entanto apresenta -9.99999 porque isto ocorre?
Simplesmente porque o programa está a usar números flutuantes, que como se sabe, são optimos para representar grandes números e para a rapidez do cálculo.
No seguinte extracto do código, vê-se que estou a transformar a string introduzida no campo horizontal para um número flutuante:
A solução passa por saber que os dados serão números até um certo limite, e que eventualmente poderemos usar em vez de float um outro tipo de números/variáveis. No caso em que estou a trabalhar existe uma biblioteca para lidar com números decimais, cujo resultado será o -10.0000 esperado.
Há que ter, se possível um sentido crítico, e buscar alternativas para atingir o resultado esperado.
Comentários
Enviar um comentário
Obrigado pelo seu contacto.