> > Bom dia, Daniel!
> > Voc� deve estar esquecendo de uma regra b�sica da matem�tica, onde a
> > multiplica��o sempre precede a divis�o

A mensagem foi para outro "Daniel", mas foi dar minha opini�o.

Desconhe�o a "regra b�sica" a qual voc� faz refer�ncia. At� onde sei n�o
existe preced�ncia entre as opera��es de divis�o e multiplica��o, exceto
pela ordem em que estas aparecem na express�o ou pela indica��o expl�cita da
preced�ncia atrav�s do uso de sinais de agrupamento (par�ntesis, colchetes,
etc).

Desta forma as express�es abaixo s�o verdadeiras:

a) A * B / C = (A * B) / C = A * (B / C) = B / C * A

b) X / Y * Z <> X / (Y * Z)

� bom lembrar, no entanto, que em linguagens de programa��o temos que
considerar os tipos dos operandos (integer, double, etc). No caso de n�meros
inteiros a ordem entre a divis�o e multiplica��o pode alterar o resultado.
Exemplo:

X = A div B * C
Y = C * A div B

Neste caso X e Y podem ser diferentes dependendo dos valores de A e B.

Exemplo:

Para A = 5, B = 2 e C = 4, temos:

X = 5 div 2 * 4 = 2 * 4 = 8
Y = 4 * 5 div 2 = 20 div 2 = 10

Outra fonte de problemas pode ser o tratamento dado �s opera��es matem�ticas
que envolvem tipos de dados diferentes (inteiro e real). Nestes casos os
resultados podem ser surpreendentes se n�o observarmos as caracter�sticas da
linguagem usada. Os exemplos abaixo no Firebird trazem resultados
diferentes, j� que no primeiro caso temos operandos inteiros e no segundo
temos um operando real:

SELECT 5 / 2 FROM RDB$DATABASE
SELECT 5.0 / 2 FROM RDB$DATABASE

Se quizer fazer com que a primeira opera��o retorno 2.5 (divis�o real),
temos que fazer um type casting para o tipo DOUBLE (ou equivalente), como
mostro abaixo:

SELECT CAST( 5 AS DOUBLE PRECISION) / 2 FROM RDB$DATABASE

ou

SELECT 5 / CAST(2 AS DOUBLE PRECISION) FROM RDB$DATABASE

Atenciosamente.

Daniel P. Guimar�es
Tecnobyte Inform�tica
www.tecnobyte.com.br



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a