Arredondamento meio ponto

MySQL

18/08/2014

Olá pessoal,

Como faço pra arredondar dessa maneira com SQL ou de outra maneira.
Delphi 7 com mysql eu uso.

1.1 ate 1.5 = 1.5
1.6 ate 2 = 2
2.1 ate 2.5 = 2.5
2.6 ate 3 = 3
Valdemi Ramos

Valdemi Ramos

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

20/08/2014

Obrigado pelo retorno, Valdemi.
Porém, sugiro que gaste um tempo para verificar o porque de não estar funcionando, pois é a melhor solução para este caso.
Abraço e bons códigos.
GOSTEI 1

Mais Respostas

Joel Rodrigues

Joel Rodrigues

18/08/2014

Já testou a função Round do Delphi?
GOSTEI 0
Valdemi Ramos

Valdemi Ramos

18/08/2014

fiz uma função ontem! Obrigado!
Pra quem interessar!

function TForm1.Arredondar(Nota: Double): Double;
var numero, decimal, inteiro, soma : Double;
begin
try
inteiro := Int(nota);
decimal := RoundTo(frac(nota), -1);

if (decimal > 0) and (decimal <= 0.5) then
soma := 0.5;
if (decimal > 0.5) then
soma := 1;
if (decimal = 0.5) then
soma := 0.5;

Result := inteiro + soma;
except on e: Exception do
showMessage('Não foi possível arredondar!' + #13#10 + e.Message);
end;
end;
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/08/2014

Imagino que você esteja utilizando um SELECT para retornar os dados do banco...
Então você pode aplicar o ROUND direto no SQL e trazer os valores já formatados...
Exemplos:
SELECT ROUND(1.6667);
# Resultado: 2
# Arredonda para não utilizar casas decimais

SELECT ROUND(1.6667, 1);
# Resultado: 1.7
# Arredonda para uma casa decimal

SELECT ROUND(1.6667, 2);
# Resultado: 1.67
# Arredonda para duas casas decimais

SELECT ROUND(CAMPO, 2) FROM TABELA;
GOSTEI 0
Valdemi Ramos

Valdemi Ramos

18/08/2014

Tentei a round() do SQL, mas nao satisfazia o que queria!

teria que ser arredondamento como expliquei a cima tipo:

5.1 a 5.5 = 5.5
5.6 a 6 = 6.

Mas resolvi com a função mesmo!

Obrigado a todos!
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/08/2014

Se vc utilizar esse exemplo
SELECT ROUND(1.6667, 1);
deve funcionar...
Como vc tinha criado a instrução?
Quer compartilhar para ver se identificamos o porque de não ter funcionado?
GOSTEI 0
Valdemi Ramos

Valdemi Ramos

18/08/2014

dessa maneira:
select nome, mommat, round(((nt_1+rp1)/2), 1)as media from matriculas
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

18/08/2014

Repita o select, trazendo também a média sem estar arredondada, assim você poderá comparar e ver se está ou não dando certo.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

18/08/2014

Achei estranho, porque eu testei o select aqui e funciona...
Não entendi porque não funcionou pra vc...
GOSTEI 0
Valdemi Ramos

Valdemi Ramos

18/08/2014

Tudo bem Marisiana,

Já resolvi com a função.

Obrigado a todos!
GOSTEI 0
POSTAR