Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LordFusion

Função ROUND, retornando valor errado.

Recommended Posts

Olá pessoal, depois de muito pesquisar, não achei algo que consiga resolver meu problema.

 

Vamos lá!!!

Preciso fazer um arredondamento de um número com três casas decimais (0.345) para duas (0.35).

 

Basicamente estou fazendo isso:

SELECT ROUND(TOTAL,2) FROM chamados;

 

O valor da coluna TOTAL, possuem valores com 2 e 3 casas decimais, onde tenho 3, preciso deixar com 2. A zica é que o ROUND está meio doido, pois quando tenho valores como no exemplo acima 0.345, em vez de arrendondar para 0.35 ele arredonda para 0.34. Para mim isso está ERRADO! Ou não?

 

Pois se eu fizer isso:

SELECT ROUND(0.345,2);

Retorna 0.35, em vez de 0.34.

Ou seja o que pode estar errado? Minha tabela, a configuração do MySQL? Meu conceito sobre ROUND?

Não sou expert em MySQL, mas o que andei lendo, toda casa decimal acima de 5, 6, 7, 8, 9. Passa para o próximo inteiro. Certo?

 

Desde já agradeço a ajuda de todos! Pois estou ficando doido, tentando resolver isso :( !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei no Oracle e deu o esmo resultado.

 

SELECT ROUND(0.345,2) x FroM dual


 X
.35

 

Mas creio que é esta regra mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então! Esse é o meu problema!

 

O certo seria o ROUND de 0.345 retornar 0.35, porém está retornando 0.34. E não sei porque e nem como resolver.

 

Alguma sugestão?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pois se eu fizer isso:

 

SELECT ROUND(0.345,2);

 

Retorna 0.35, em vez de 0.34.

 

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

 

Acho que me expressei mau.

 

O que acontece: Quando faço o SELECT na tabela que já possuo os dados como no exemplo que dei:

Basicamente estou fazendo isso:

SELECT ROUND(TOTAL,2) FROM chamados;

 

O resultado que eu esperava retornar para o campo TOTAL, quando o valor dele fosse 0.345, seria de 0.35. No entanto retorna 0.34.

 

Assim para checar possíveis problemas no banco ou na tabela, segui um exemplo que tem no MySQL Dev, de como usar a função ROUND. No caso...

SELECT ROUND(0.345,2);

 

E pra meu espanto, nesse caso retornou o valor correto de 0.35.

 

Ou seja quando tenho o valor 0.345 no campo TOTAL da tabela "chamado" e faço um SELECT ROUND desse valor, o resultado DEVERIA ser 0.35, mas está sendo 0.34. Entendeu?

 

Assim gostaria de ter uma idéia do porque isso está acontecendo? Se eu testar a função dá certo, mas se usa-la no meu SELECT dá errado...

 

Não sei se ficou mais claro agora!!! Qualquer coisa me avisa!!!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que retorna se :

 

SELECT TOTAL ,ROUND(TOTAL,2) TOTALR FROM chamados;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja passou um mês, acho q tu ja deve ter resolvido.

Mas fica a dica mesmo assim.

Fiz o teste aqui e :

SELECT ROUND(0.345,2);

Retorna 0.35

 

SELECT ROUND('0.345',2);

Retorna 0.34

 

Resumindo verifique se seu `TOTAL` esta como decimal, porque se estiver como string não vai retornar mesmo 0.35 .

 

...

SELECT ROUND(TOTAL,2) FROM chamados;

 

O valor da coluna TOTAL, possuem valores com 2 e 3 casas decimais, onde tenho 3, preciso deixar com 2. A zica é que o ROUND está meio doido, pois quando tenho valores como no exemplo acima 0.345, em vez de arrendondar para 0.35 ele arredonda para 0.34. Para mim isso está ERRADO! Ou não?

 

Pois se eu fizer isso:

SELECT ROUND(0.345,2);

Retorna 0.35, em vez de 0.34.

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.