 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Mazo1 Aprendiz

Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Seg Jun 12, 2017 6:37 pm Assunto: Como arrendondar neste caso? |
|
|
Pessoal,
Preciso fazer o seguinte arredondamento nas medias de várias notas, Exemplo: Se a nota for 7,68 arredonda para 8,0, se a nota for 7,28 arredonda para 7,5 (observação: o primeiro arredondamento já consegui o problema é que se a nota vem como 7,28 como fazer esse segundo arredondamento?)
| Código: |
BEGIN
FOR
select n.disciplina_notas,
d.nome_disciplina,
(select n1.nota
from notas n1
where n1.disciplina_notas = n.disciplina_notas
and n1.matricula_aluno_notas = n.matricula_aluno_notas
and n1.codigo_turma_notas = n.codigo_turma_notas
and n1.bimestre = '1 BIMESTRE') nota_1,
(select n2.nota
from notas n2
where n2.disciplina_notas = n.disciplina_notas
and n2.matricula_aluno_notas = n.matricula_aluno_notas
and n2.codigo_turma_notas = n.codigo_turma_notas
and n2.bimestre = '2 BIMESTRE') nota_2,
(select n3.nota
from notas n3
where n3.disciplina_notas = n.disciplina_notas
and n3.matricula_aluno_notas = n.matricula_aluno_notas
and n3.codigo_turma_notas = n.codigo_turma_notas
and n3.bimestre = '3 BIMESTRE') nota_3,
(select n4.nota
from notas n4
where n4.disciplina_notas = n.disciplina_notas
and n4.matricula_aluno_notas = n.matricula_aluno_notas
and n4.codigo_turma_notas = n.codigo_turma_notas
and n4.bimestre = '4 BIMESTRE') nota_4,
(select n5.nota
from notas n5
where n5.disciplina_notas = n.disciplina_notas
and n5.matricula_aluno_notas = n.matricula_aluno_notas
and n5.codigo_turma_notas = n.codigo_turma_notas
and n5.bimestre = '2 RECUPERACAO') nota_5,
(select n6.nota
from notas n6
where n6.disciplina_notas = n.disciplina_notas
and n6.matricula_aluno_notas = n.matricula_aluno_notas
and n6.codigo_turma_notas = n.codigo_turma_notas
and n6.bimestre = '3 RECUPERACAO') nota_6,
(select n7.nota
from notas n7
where n7.disciplina_notas = n.disciplina_notas
and n7.matricula_aluno_notas = n.matricula_aluno_notas
and n7.codigo_turma_notas = n.codigo_turma_notas
and n7.bimestre = '4 RECUPERACAO') nota_7,
(select n8.nota
from notas n8
where n8.disciplina_notas = n.disciplina_notas
and n8.matricula_aluno_notas = n.matricula_aluno_notas
and n8.codigo_turma_notas = n.codigo_turma_notas
and n8.bimestre = '5 RECUPERACAO') nota_8,
(select n9.nota
from notas n9
where n9.disciplina_notas = n.disciplina_notas
and n9.matricula_aluno_notas = n.matricula_aluno_notas
and n9.codigo_turma_notas = n.codigo_turma_notas
and n9.bimestre = '5 RECUPERACAO') nota_9
from notas n left join disciplina d on n.disciplina_notas = d.codigo
where n.matricula_aluno_notas =:MATRICULA_ALUNO
and n.codigo_turma_notas =:CODIGO_TURMA
group by n.disciplina_notas,
d.nome_disciplina,
n.matricula_aluno_notas,
n.codigo_turma_notas
INTO :DISCIPLINA_NOTAS,
:NOME_DISCIPLINA,
:NOTA1,
:NOTA2,
:NOTA3,
:NOTA4,
:NOTA5,
:NOTA6,
:NOTA7,
:NOTA8,
:NOTA9
DO
BEGIN
begin
media_nao_arredonda = (nota1 + nota2 + nota3 + nota4)/4;
pega_decimal = (nota1 + nota2 + nota3 + coalesce(nota4,2))/4 - trunc((nota1 + nota2 + nota3 + coalesce(nota4,0))/4);
media_sem_decimal = trunc(nota1 + nota2 + nota3 + coalesce(nota4,0))/4;
pega_1decimal = (nota1 + nota2 + nota3 + coalesce(nota4,2))/4 - trunc((nota1 + nota2 + nota3 + coalesce(nota4,0))/4);
end
SUSPEND;
END
END
[quote][/quote] |
|
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Jun 12, 2017 8:42 pm Assunto: |
|
|
Boa noite,
Você quer arredondar sempre para cima para ficar com final 0 ou 0.5? Se for experimente mais ou menos dessa forma:
| Código: | if ((pega_decimal = 0) or (pega_decimal = 0.5)) then
media_com_arredonda = media_nao_arredonda
else
if (pega_decimal > 0.5) then
media_com_arredonda = media_nao_arredonda + 1 - pega_decimal
else
media_com_arredonda = media_nao_arredonda + 0.5 - pega_decimal; |
Espero que ajude
Editado pela última vez por imex em Dom Fev 25, 2024 3:50 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
Mazo1 Aprendiz

Registrado: Domingo, 3 de Janeiro de 2010 Mensagens: 256 Localização: Alagoas
|
Enviada: Seg Jun 12, 2017 10:35 pm Assunto: |
|
|
Boa noite,
Mais uma vez você Imex, na mosca, que Deus te abençoe sempre, veja como ficou:
| Código: |
DO
BEGIN
begin
if ( nota5 >= nota1 ) then
nota1 = nota5;
else
nota1 = nota1;
if ( nota6 >= nota2 ) then
nota2 = nota6;
else
nota2 = nota2;
if ( nota7 >= nota3 ) then
nota3 = nota7;
else
nota3 = nota3;
if ( nota8 >= nota4 ) then
nota4 = nota8;
else
nota4 = nota4;
media_nao_arredonda = (nota1 + nota2 + nota3 + nota4)/4;
pega_decimal = (nota1 + nota2 + nota3 + coalesce(nota4,2))/4 - trunc((nota1 + nota2 + nota3 + coalesce(nota4,0))/4);
end
begin
if ((pega_decimal = 0) or (pega_decimal = 0.5)) then
media_com_arredonda = media_nao_arredonda;
else
if (pega_decimal > 0.5) then
media_com_arredonda = media_nao_arredonda + 1 - pega_decimal;
else
media_com_arredonda = media_nao_arredonda + 0.5 - pega_decimal;
end
SUSPEND;
END
END
|
|
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|