[firebase-br] Resultado de divisoes

Otto ottofuch em terra.com.br
Sex Nov 5 21:27:46 -03 2004


Segundo o livro da Helen, depende do dialeto.
No dialeto 1
SELECT  1/3 AS RESULT FROM RDB$DATABASE
resulta em 0.333333333333333
Já no dialeto 3 resulta em 0 (zero).

Isto tem algo a ver com a escala. No dialeto 1, o Firebird soma a escala dos
dois operandos para determinar a escala do resultado (quociente), tendo o
quociente uma precisão de 18. No dialeto 3, em conformidade com o SQL-92. os
inteiros (integer) tem uma escala de 0 (zero) "que, para fins de
consistência requer que o resultado (quociente)  de qualquer operação
inteiro/inteiro esteja em conformidade com as regras de escalas (scaling
rules) de numéricos fixos (fixed numerics) e produzam um inteiro".

Assim, ambos tem razão, um para o dialeto 1, e outro, para o dialeto 3. E
serve como alerta que mudanças de dialetos podem produzir surpresas.

100+
Otto


----- Original Message ----- 
From: "Edvaldo (bol)" <evgomes em bol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, November 05, 2004 12:51 PM
Subject: Re: [firebase-br] Resultado de divisoes


Não tem nada a ver isto que vocês estão falando "divisão de integer por
integer dá integer", depende da variável que vai receber o resultado. Neste
caso está sendo feito no SELECT, então o resultado de 6/5 é 1,2, igual a
qualquer outra calculadora normal.

Edvaldo

----- Original Message -----
From: "eduardo" <eduardo em icontroller.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, November 04, 2004 3:39 PM
Subject: Re: [firebase-br] Resultado de divisoes


> Oi Camillo
>
> Isto é porque o resultado da operação entre integers é integer.
> Neste caso, não adianta dar um CAST no resultado porque ele já não
> contém decimais (é integer)
> Para forçar um resultado Float vc deve forçar que um dos dois, dividendo
> ou divisor seja float, como:
> 6.0/5
> ou CAST( 6 AS NUMERIC(10,4) )/5
>
> Boa Sorte ,
> Eduardo
>
> LISTA wrote:
>
> >Porque quando executo o seguinte comando o resultado é 1, ou seja, so a
parte inteira da divisão ? Como faço para obter o resultado exato da divisão
dentro de um SP?
> >
> >SELECT cast(6/5 as real)  FROM RDB$DATABASE
> >
> >Percebi isso quando fiz uma SP e o resultado estava sempre errado,
fazendo o debug verifiquei que o erro era decorrente da situação acima.
> >
> >Desdee ja agradeço a todos
> >
> >Camillo
> >______________________________________________
> >FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> >Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >
> >
> >
> >
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br





Mais detalhes sobre a lista de discussão lista