Avançar para o conteúdo principal

Aparentes erros com ponto flutuante

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

Mensagens populares deste blogue

C# - Viadutos Excel - ISPOL

C# - Viadutos Excel - ISPOL Ler dados do Excel e passar a informação para o ISPOL é um ganho de produtividade e organização. Desta vez, apresento uma utilidade que lê um ficheiro Excel, e transforma os dados para o menu de estruturas do ISPOL. Partindo de um Excel organizado, por pks eixos e espessuras da estrutura etc... como o seguinte: Elaborei um programita em CSharp: Este programa funciona em modo "DOS" não tem uma interface gráfica de janelas: O programa cria os ficheiros necessários, o Excel pode estar organizado por eixos, e o programa guarda um ficheiro para cada eixo: O resultado depois de abrir o ficheiro em ISPOL é o seguinte: Com as alterações ao projecto pode-se manter um ficheiro de apresentação e controlo em Excel.

Politica de privacidade das aplicações colocadas na Play Store do Google

Politica de privacidade das aplicações colocadas na Play Store do Google. As aplicações não recolhem qualquer dado do utilizador nem a armazenam ou partilham com terceiros. Não recolhem a localização nem a armazenam ou partilham com terceiros. Alguma informação sobre os utilizadores que possa chegar ao programador por via da Play Store, será tratada de acordo com toda a confidencialidade, e não fornecida a terceiros. Obrigado.

ISPOL - Areas de linhas fechadas CAD + ISTRAM

ISPOL - Areas de linhas fechadas CAD + ISTRAM Por vezes em CAD deparamos com alguns problemas em determinar as áreas de linhas que aparentemente estão fechadas ou contíguas, mas na verdade não estão. Mostro a introdução do ISTRAM num fluxo de trabalho de medição de áreas em CAD. Vista 3D do exemplo Como se mostra na primeira imagem, gerei uma rotunda de forma rápida em ISPOL. Em CAD, suponhamos que queremos medir as áreas em planta de pavimentos, passeios... Depois de uma limpeza e algum tratamento ao picar na área que aparentemente está fechada, que poderia representar a berma ou um passeio, temos um aviso comum no CAD, as linhas não têm continuidade. Neste caso em mais de uma situação, e na figura, apenas para a "área inferior". Linhas em CAD Podemos introduzir no fluxo de trabalho o ISTRAM, se a ele tivermos acesso. Podemos fazer um copy paste directo (linhas) do CAD para o ISTRAM. As mesmas linhas em ISTRAM Um primeiro passo pode ser filtrar e tratar o desenho, unindo de