Ir ao conteúdo

Fórmula De Arredondamento


Computado

Posts recomendados

Postado

Olá pessoal, não sei se estou no forum certo pra peguntar isso, mas vamos la, alguem saberia alguma formula comprovada (que funcione) que alguma cpu ou qualquer maquina use pra arredondar os numeros em seus calculos? Valeu!

  • Membro VIP
Postado

Melhor você jogar um pouco de luz sobre a pergunta. Não estou entendendo se você faz a pergunta do ponto de vista do hardware (o arredondamento natural, pelo limite da precisão de 32-bit, 64-bit ou 80-bit) ou do software (dos algoritmos implementados para o cálculo de funções mais complexas sem usar as funções implementadas no hardware, como fsin, fcos, etc...).

Explique melhor o que você está pensando.

  • Membro VIP
Postado
Postado Originalmente por alyssonr@24 mar 2004, 00:56

80 bits ???? como assim???!!!!!

Ele está falando de arredondamento, portanto imagino contas com ponto flutuante (poderia ser com inteiros, mas ai é mais fácil, pois o controle é do programador).

A FPU dos nossos processadores tem os padrões definidos desde quando ela era um chip anexo, chamado de 8087, o famoso co-processador matemático, que você comprava e incluia na placa-mãe. Isso no tempo do onça, no nascimento do IBM PC.

Depois com o tempo a unidade FPU foi inserida no processador (no 486), mas desde o início é um chip com pilhas de 8 registradores de 80-bit. Essa é a precisão máxima, que é conhecida como precisão extendida. Também é aceita a precisão dupla, de 64-bit e a simples, de 32-bit.

Tudo isso já se podia ter no PCzinho de 4.77MHz...

Postado

Olá pessoal, me informei mais sobre meu problema e agora estou mais consiente do que preciso, é o seguinte, preciso a formula de arredondamento de uma calculadora levando em conta a regra e que numeros depois do ponto zero a quatro permanecem iguais (0 à 4), e os numeros de cinco a nove aumenta um (5 à 9)

Ex: 23.34 - Permanece assim.

23.36 = 23.4

E assim vai...

Abraços...

  • Membro VIP
Postado

Bem, ai não é um problema do processador, mas sim de matemática.

Depende do número de casas que você quer fazer o arredondamento.

Se for sempre duas casas, já te dou uma dica.

Primeiramente multiplique o número por 10 e pegue apenas a parte fracionária do resultado (em Pascal é a função Frac,não lembro como é em C, mas acho que não existe função direta, você tem que subtrair o número pelo parte inteira). Assim 23.36*10=233.6 -> fração = 0.6.

Veja se a fração é maior ou igual a 0.5.

Se for maior, você multiplica o número inicial (23.36) por 10, usa a função Round para arredondar e depois divide por 10. Resultado: 23.4

Caso seja menor (por exemplo, 23.34), você multiplica por 100 o númeor (2334), faz o truncamento (função Trunc ou Int), o que joga fora a parte fracionária, e ai divide por 100. você sempre guarda em um número de ponto flutuante (float ou double).

Se não for apenas 2 casas decimais, você vai ter que pensar em um modo bem mais complexo. As vezes até usando strings.

Postado

sledgehammer valeu mesmo , mas tipo mais uma vez eu expressei mal, bom, com sua dica eu já to entendendo o esquema, so que não teria como implementar essas teria em pura fórmula matemática (sem o uso de qualquer funcao não matematica como round)?

  • Membro VIP
Postado
Postado Originalmente por Computado@31 mar 2004, 17:07

sledgehammer valeu mesmo , mas tipo mais uma vez eu expressei mal, bom, com sua dica eu já to entendendo o esquema, so que não teria como implementar essas teria em pura fórmula matemática (sem o uso de qualquer funcao não matematica como round)?

Mas round é uma função matemática. É um arredondamento.

O que em geral se faz para arrendondar é somar 0.5 se for um número positivo, ou subtair 0.5 se for negativo e truncar o número. Isso é um arredondamento. Não tem como fugir disso (truncar ou arredondar).

Postado

Mas não teria um fórmula totalmente matematica pra fazer isto? Preciso para a matéria de Probabilidade e Estatística, não teria nada a ver com programacao, é pura matemática mesmo...

  • Membro VIP
Postado

Mas como disse, a função arredondamento é como uma função descontínua.

Se a parte decimal é maior ou igual a 0.5, usasse o inteiro imediatamente superior. Se é menor que 0.5, então usasse o inteiro imediatamente inferior. Isso é matemática.

Se você está procurando um função com logaritmos, exponenciais, etc pra fazer isso, você vai precisar ralar bastante.

Arredondamento é na verdade um teste, que depende de uma lógica.

Postado

:naonao: Na boa, essa sua dúvida poderia estar em um fórum de matemática aplicada bichão, ou programação no máximo. Já não me basta ter que acreditar que o mundo é redondo e você vem com este papo de arredondar por lógica ?!?

Ora o que é, é. Não precisa por si só ser modificado, logo o arredondamento é uma questão de conveniência lógica que necessita de funções regras dentre outros. Como uma função você define se x=0, pô se x fosse = a zero eu poderia dizer que meu filho ama a 0u0a e eu a 0o0ota da 0u0a hehehehe.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!