BrasilForeingExchange
19-11-2018, 11:34 AM
A booleana FALSE é representada pelo valor zero inteiro, enquanto que a booleana TRUE é representada por qualquer valor não inteiro.
O valor de expressões contendo operações de relação ou operações lógicas é FALSE (0) ou TRUE (1).
True se a é igual a b a == b;
True se a não igual a b a != b;
True se a é menor que b a < b;
True se a não é menor que b a > b;
True se a é menor ou igual a b a <= b;
True se a é maior ou igual a b a >= b;
A igualdade de dois números reais não pode ser comparada. Na maioria dos casos, dois números aparentemente idênticos podem ser desiguais por causa da diferença de valores na 15 casa decimal. A fim de comparar corretamente dois números reais, compare a diferença normalizada destes números com zero.
Exemplo:
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
void OnStart()
{
double first=0.3;
double second=3.0;
double third=second-2.7;
if(first!=third)
{
if(CompareDoubles(first,third))
printf("%.16f e %.16f são iguais",first,third);
}
}
// Resultado: 0.3000000000000000 0.2999999999999998 são iguais
O valor de expressões contendo operações de relação ou operações lógicas é FALSE (0) ou TRUE (1).
True se a é igual a b a == b;
True se a não igual a b a != b;
True se a é menor que b a < b;
True se a não é menor que b a > b;
True se a é menor ou igual a b a <= b;
True se a é maior ou igual a b a >= b;
A igualdade de dois números reais não pode ser comparada. Na maioria dos casos, dois números aparentemente idênticos podem ser desiguais por causa da diferença de valores na 15 casa decimal. A fim de comparar corretamente dois números reais, compare a diferença normalizada destes números com zero.
Exemplo:
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
void OnStart()
{
double first=0.3;
double second=3.0;
double third=second-2.7;
if(first!=third)
{
if(CompareDoubles(first,third))
printf("%.16f e %.16f são iguais",first,third);
}
}
// Resultado: 0.3000000000000000 0.2999999999999998 são iguais