Loading...
Pages: [1]   Go Down
Author Topic: Qual é o melhor método para comparar 2 floats  (Read 228 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Estava aqui eu a comprar 2 float e estava a dar bronca ... até que pesquisei na net e vi que nunca se deve comparar 2 float nem ver se são diferentes ... e que de deve utilizar a "Machine epsilon"

Agora perguntou eu  Qual é o melhor método para comparar 2 floats

Cpts

Zé tretas
Logged

'round the world...
Offline Offline
Edison Member
*
Karma: 20
Posts: 2308
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

compara inteiros antes de os converteres para float? Esta é a minha solução, usar float apenas para visualização de valores, nunca para cálculos.

Dá uma vista de olhos aqui:

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
http://floating-point-gui.de/errors/comparison/

Lembrei-me agora doutro truque que talvez te seja útil. Normalmente não precisas de 3 ou até duas casas decimais (porque são erro...), então podes passar a usar dezenas como a tua unidade em vez de unidades. Ou seja, o inteiro 115 na realidade quer dizer 11,5, mas para cálculos e comparacões isso não importa, e assim só precisas de converter para float quando quiseres visualizar.
Sem mais informacão não há como saber qual a melhor estratégia... mas isto costuma resultar bem.
« Last Edit: March 06, 2013, 05:11:09 pm by bubulindo » Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

podes meter ai "3" linhas de codigo de como fazer para converter para int e depois outra ver para float ... é que eu só sei intTofloat ... mas isso não é pro arduino  smiley-cool

Cpts

Zé tretas
Logged

'round the world...
Offline Offline
Edison Member
*
Karma: 20
Posts: 2308
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

float num = 115;

int top = 100;

float num = (float) top/2;

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Pages: [1]   Go Up
Print
 
Jump to: