Fórum Divisão entre doubles #35270
09/07/2009
0
Srs., uma colega está com um problema: Ela criou uma procedure que faz a divisão de 2 variáveis do tipo double precision. Quando ela executa o comando, o resultado está truncando o valor. Mas não há nenhum round nem trunc para isso.
Alguém sabe se é alguma configuração do SQL Server, ou se há algo a fazer para não truncar essa divisão?

Greik
Curtir tópico
+ 0Posts
09/07/2009
Jair Bg
qual a versão do MSQL?
Gostei + 0
10/07/2009
Greik
Segue abaixo um exemplo da procedure que não retorna todas as informações:
ALTER PROCEDURE TESTE
AS
DECLARE @V_VRATUAL DOUBLE PRECISION;
DECLARE @V_TESTE DOUBLE PRECISION;
DECLARE @V_1 DOUBLE PRECISION;
DECLARE @V_2 DOUBLE PRECISION;
BEGIN
SET @V_1=1000000
SET @V_2=5001
SET @V_VRATUAL = @V_1 / @V_2;
SET @V_TESTE = @V_VRATUAL;
PRINT(@V_TESTE);
END;
Esse cálculo deveria retornar: 199,96000799840031993601279744051
Como posso fazer?
Muito obrigado.
Gostei + 0
10/07/2009
Jair Bg
Gostei + 0
10/07/2009
Greik
Gostei + 0
10/07/2009
Jair Bg
Gostei + 0
11/07/2009
Emerson Nascimento
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ALTER PROCEDURE TESTE AS DECLARE @V_VRATUAL DOUBLE PRECISION; DECLARE @V_TESTE DOUBLE PRECISION; DECLARE @V_1 DOUBLE PRECISION; DECLARE @V_2 DOUBLE PRECISION; BEGIN SET @V_1=1000000 SET @V_2=5001.00000000000000000000 SET @V_VRATUAL = @V_1 / @V_2; SET @V_TESTE = @V_VRATUAL; PRINT(@V_TESTE); END; |
Gostei + 0
11/07/2009
Emerson Nascimento
o indicado seria mesmo decimal ou numeric.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ALTER PROCEDURE TESTE AS DECLARE @V_VRATUAL decimal(30,20) DECLARE @V_TESTE decimal(30,20); DECLARE @V_1 DOUBLE PRECISION; DECLARE @V_2 DOUBLE PRECISION; BEGIN SET @V_1=1000000 SET @V_2=5001 SET @V_VRATUAL = @V_1 / @V_2; SET @V_TESTE = @V_VRATUAL; PRINT(@V_TESTE); END; |
Gostei + 0
22/10/2009
Greik
Muitíssimo obrigado a todos.
Att;
Greik.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)