Pular para o conteúdo principal

Postagens

Mostrando postagens de Setembro, 2017

DICA: Atenção às operaçõs com float

Descobri por acaso uma característica de C# que até então me escapara.

A função em si é bem simples, tenho que alterar uma rotação com o tempo.
Assim que a cena começa (t = 0) o objeto tem rotação de 10º.
Após 30 segundos (t=30) a rotação tem de ser 90º.

Um pouco de Álgebra Linear:

Podemos representar essa equação na seguinte expressão:

rotacao = 8 / 3 * t + 10;

Maravilha!
Só que não.

Quando a cena atinge a marca dos 30 segundos a rotação do objeto é70º.

Chequei meus cálculos. Estão corretos.
Substituo t por 30 no papel: o resultado é 90
Jogo a fórmula na calculadora: 90
Google: 90

Eis que percebo que meus números não são float.

Faço uma pequena alteração na expressão:

rotacao = 8f / 3f * t + 10f;

Funciona!

POR QUE O COMPORTAMENTO ESTRANHO? Por padrão, números são tratados como Inteiros pelo C#.
Uma vez que números inteiros não possuem casas decimais, em casos de divisão o C# trás uma aproximação, ignorando o resto da divisão.

Na prática, minha fórmula inicial foi calculada da seguinte fo…

Formulário de Contato

Nome

E-mail *

Mensagem *