fbpx

(44) 99955-1057

O Problema de números em ponto flutuante

0 Comments

Nas declarações de variáveis dos tipos reais (float e decimal) em aplicações C# é necessário inicializá-las com uma letra correspondente ao seu tipo, pois, caso contrário serão consideradas como double, que é o padrão para valores numéricos em ponto flutuante nessa linguagem. Para variáveis float deve ser colocado um F logo após o seu valor, e para variáveis do tipo decimal a letra m. Observe a figura 1, que mostra o trecho de um código em C#. Nesses casos, podem ocorrer erros na declaração de variáveis reais (em ponto flutuante) passíveis de correções e, dependendo da aplicação, não provoca muitos prejuízos nos resultados. Entretanto, em outros casos de aplicações práticas, erros ligados ao uso desse tipo de variáveis podem ser catastróficos ou, no mínimo, provocar resultados duvidosos.

Vamos considerar a seguinte situação bem básica da Física Clássica, em que um corpo, abandonado a uma certa altura do solo, aumenta sua velocidade de 9.80665 m/s a cada segundo na queda. O programa em console “PrExeQuedaLivre1”, codificado em C# (numa primeira versão) mostra a evolução da velocidade do corpo a cada intervalo de 0.1 segundo, cuja saída pode ser vista na figura 2.1, mostrando que de t=0.0 até t=2.0 foram executadas 20 iterações: uma a cada intervalo de tempo; entretanto, matematicamente, deveria ser 21 o número de iterações. Esse erro foi devido ao uso do tipo float nas variáveis do loop que calcula as velocidades instantâneas. Agora, observando o programa na sua segunda versão (“PrExeQuedaLivre2”), quando é utilizado o tipo decimal, o número de iterações resulta no valor correto: 21, mostrando a saída na figura 2.2. Este valor correto foi obtido porque foi utilizado o tipo decimal nas variáveis, observando a compatibilidade.


Tenho pdf do meu mais recente livro “1001 Programas Prontos Para Você Codificar Na Sua Linguagem Preferida”, e de mais outros dois:

“Curso Básico de C – Prático e Fácil” e “Curso Básico de Programação – Teoria e Prática”.

Para maiores detalhes, entre em contato: [email protected]


Mario Leite

Mário Leite é natural de Tombos (MG); estudou física durante dois anos no Instituto de Física da UFRJ; foi aluno de Iniciação Científica no Centro Brasileiro de Pesquisas Físicas (CBPF) e do CNPq, no Rio de Janeiro. É graduado e pós-graduado em engenharia pela Pontifícia Universidade Católica do Rio de Janeiro (PUC/RJ), onde foi professor auxiliar de ensino e pesquisa do Departamento de Ciências dos Materiais e Metalurgia. Tem especialização em Análise de Sistemas pelo Centro Universitário de Maringá (UniCesumar) e mestrado em Engenharia de Produção pela Universidade Federal de Santa Catarina (UFSC). Atualmente é professor-tutor de Técnicas de Programação e Ferramentas Computacionais na Universidade de Uberaba (UNIUBE), e autor de vários livros na área de programação.

Leave a Comment

Your email address will not be published.