Ir para conteúdo


Arredondamento De Notas


9 respostas neste tópico

#1 --regina --

--regina --
  • Visitantes

Postado 04 abril 2007 - 10:30

Olá Pessoal!

Estou desenvolvendo um sistema de notas escolares, encontrei a seguinte situação:

QUOTE
Nota=50
Recuperação=65
Média = 57.5
o problema é que não posso manter este valor o correto, para este caso, seria 60, ao usar o Math.ceil ou Math.round eu obtenho o valor 58.

Como devo proceder para obter o valor 60?



Uma situação que tentei, mas que me parece mais difícil é esta:
QUOTE
Nota=5.0
Recuperação=6.5
Média = 6

Por que considero mais difícil? Porque eu teria que criar uma máscara para cada item, porém como trataria em caso de nota = 100? Gostaria de facilitar ao cliente.

Se alguém puder me ajudar em algumas das situações acima eu agradeço muito biggrin.gif

#2 CSML sistemas

CSML sistemas
  • Membros
  • 361 posts

Postado 04 abril 2007 - 10:40

Acho que está no caminho certo. Tenta fazer isto:

var valor_arredondado = Math.round(media / 10) * 10;

Verificando:

Imaginemos que: media = 57.5
Neste caso, a divisão "media / 10" produziria o valor: 5.75
Aplicando a função Math.round, seria obtido o valor: 6
Realizando a operação de multiplicação por 10, teríamos o resultado: 60
Este resultado seria armazenado na variável "valor_arredondado".

Corrija-me se estiver errado.

cool.gif

#3 --regina --

--regina --
  • Visitantes

Postado 04 abril 2007 - 11:01

Muito obrigada CSML sistemas!!!

#4 CSML sistemas

CSML sistemas
  • Membros
  • 361 posts

Postado 04 abril 2007 - 11:17

Existe uma questão importante, qual o grau de precisão que é estabelecido para a média? Aceita valores múltiplos de 5 também?

#5 --regina --

--regina --
  • Visitantes

Postado 05 abril 2007 - 10:11

Sim a média pode ser 60 ou 65, por exemplo.

Por?

Novamente agradeço.

#6 CSML sistemas

CSML sistemas
  • Membros
  • 361 posts

Postado 05 abril 2007 - 11:39

No caso de aceitar múltiplos de 5, basta ajustar o cálculo anteriormente proposto, da seguinte forma:

var valor_arredondado = Math.round(media / 5) * 5;

Ok?

cool.gif

#7 --regina --

--regina --
  • Visitantes

Postado 05 abril 2007 - 16:52

Vou verificar com a direção da escola como funciona exatamente o arredondamento deles, mas acredito que esteja correto dessa forma.

Obrigada CSML sistemas e Feliz Páscoa!!!

#8 --regina --

--regina --
  • Visitantes

Postado 14 abril 2007 - 10:58

Pessoal, surgiu uma nova situação.

Ao apresentar o módulo de boletim, a pedagoga falou que deve ter decimal, ou seja 6,0 / 10,0 etc.

Agora a fórmula não funciona mais gera NAN, como faço devo fazer para que volte a funcionar, considerando números decimais?

Desde já obrigada!!!

#9 CSML sistemas

CSML sistemas
  • Membros
  • 361 posts

Postado 14 abril 2007 - 11:19

Se o resultado estiver correto, mas a ordem de grandeza mudou, basta ajustar para a atual, tipo:

var valor_arredondado = Math.round(media / 5) * 5; --> obtém o valor correto, mas com escala de 0 a 100

var valor_arredondado = (Math.round(media / 5) * 5) / 10; --> ajusta o valor para a escala de 0 a 10


Será que seria algo assim?

#10 --regina --

--regina --
  • Visitantes

Postado 25 abril 2007 - 16:05

Agora está tudo funcionando certinho, vou postar o script para quem precisar poder utilizar ao menos como fonte de pesquisa:

CODE
function CalculaMedia(nota,recuperacao) {
var resultado = "0";
if (nota == "") {
    nota = "0";
}    
nota = nota.replace( ",", "." );
if ((recuperacao == "") || (recuperacao == 0)) {
    recuperacao = "0";
    resultado = nota;
}else{
    recuperacao = recuperacao.replace( ",", "." );
    var media = (parseFloat(nota) + parseFloat(recuperacao))/2;
    media = Math.round((parseFloat(media) / 5) * 5);
    media = media.toFixed(1);
    resultado = media;
}
resultado = resultado.replace( ".", "," );
return resultado;
}


Agradeço a ajuda do CSML sistemas.





Responder



  


0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos