Não arredondar resultado

14/03/2012

0

Olá a todos!

Estou com dificuldade no arredondamento de números.
Por exemplo: select 15 / 2 = 7.50

Acontece que no meu SQL está mostrando o resultado = 7.00.
O campo onde estou realizando a operação é do tipo DECIMAL(38,2).

Alguém poderia me ajudar?

Obrigado.
Gabriel Soares

Gabriel Soares

Responder

Posts

14/03/2012

Bruno Leandro

veja se desta forma arredonda corretamente

select cast( (CAST (15 as numeric(38,2)) / CAST (2 as numeric(38,2))) as numeric(38,2))
Responder

14/03/2012

Gabriel Soares

Oi Bruno!

Realmente seu código funciona, porém eu preciso de algo
mais direto, sem conversões e afins.

Simplesmente que SELECT 15/2 me retorne 7.5.

Já pensei até que fosse collation ou algo parecido, mas
por enquanto nada.

Obrigado...
Responder

14/03/2012

Joel Rodrigues

Cara, tente o seguinte teste:

SELECT 15/2.0
ou
SELECT 15.0/2

Aqui, pelo menos, deu 7.5 com várias casas decimais. Quando você põe apenas o número em representação inteira o ´´compilador´´ intende como um inteiro e a divisão de inteiros, retorna um inteiro (estranho, não? coisa de tipagem de dados). Em C/C++ você também pode observar isso, pelo menos em alguns compiladores.

Logo, você precisa garantir que os termos das operações sejam realmente decimais com a quantidade de casas que você deseja. Para o exemplo, a forma mais segura seria 15.0/2.0.

Boa sorte.
Responder

14/03/2012

Alex Lekao

Ola Gabriel, bom dia!!!

O resultado da sua divisão estão aparecendo da forma que mencionou diretamente no Sql ou no seu erp ou no programa que vc esta usando para desenvolver alguma aplicacao?

No meu caso aqui, fiz varias operações diretamente no banco de dados e todas apareceram com as decimais sendo respeitadas, em alguns caso com varias decimais, mas os meus campos estavam todos com os valores normais de campo numero decimal 15,2 por exemplo.

Mesmo fazendo as operações pegando um valor e dividindo por um valor fixo, exemplo: campox / 15, os cálculos mantiveram as decimais, ate mesmo qdo o resultado era um inteiro, exemplo 1, era exibido, 1.0000 por exemplo.

Acredito que seja mais uma questão de formatação do campo em seu erp ou no software para criar os aplicativos que vc esteja utilizando.

so para contar a estrutura do meu campo era: numeric(12,2)

Nao sei se isto ajudara vc mas achei que poderia ser útil de alguma maneira.

Tenha um bom dia!!!

Abraco.

Alex - Lekao
Responder

14/03/2012

Bruno Leandro

o resultado é inteiro porque é o padrão sql.

o normal quando dividimos dois número o resultado pode ser inteiro ou fração, mas no sql a divisão de um inteiro por outro inteiro é obtido como resultado um inteiro

http://msdn.microsoft.com/pt-br/library/ms175009.aspx

Segundo o site:

Tipos de resultado

Retorna o tipo de dados do argumento com a precedência mais alta. Para obter mais informações, consulte Precedência de tipo de dados (Transact-SQL).

Se um dividend inteiro for dividido por um divisor inteiro, o resultado será um inteiro que terá truncada qualquer parte fracionária do resultado.
Responder

15/03/2012

Gabriel Soares

Bom dia!!!

Gostaria de agradecer a todos os que me ajudaram nesta questão dos arredondamentos.
Pelo visto terei de trabalhar com conversão ou inserindo . nos números
devido ao fato de estar dividindo dois inteiros.

A ajuda de vocês foi fundamental, até pelo fato de que várias cabeças pensam
melhor do que uma.

Novamente, Muito Obrigado!

Gabriel S.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar