Ir para conteúdo
  • Cadastre-se

dev botao

Função de Arredondamento


Ver Solução Respondido por bnobre,
  • Este tópico foi criado há 2096 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

Existe em ACBrUtil o método abaixo:

{-----------------------------------------------------------------------------
 Arredondamento segundo as normas da ABNT NBR 5891/77  (por: DSA)
 Fontes:
 http://www.sofazquemsabe.com/2011/01/como-fazer-arredondamento-da-numeracao.html
 http://partners.bematech.com.br/2011/12/edicao-98-entendendo-o-truncamento-e-arredondamento-no-ecf/
 -----------------------------------------------------------------------------}
function RoundABNT(const AValue: Double; const Digits: TRoundToRange;
  const Delta: Double): Double;

 

http://svn.code.sf.net/p/acbr/code/tools/Diversos/ABNT NBR-5891 Regras de arredondamento e numeração decimal.pdf

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Daniel, obrigado pelo retorno.

Infelizmente essa função não faz o que eu preciso.

Eu tenho uma tela de Reajuste de Preços e alguns valores ficam "quebrados" para vender. Ex.: R$ 1,63, R$ 7,77, R$10,93, etc...

Portanto precisava que a segunda casa decimal fosse apenas 5 ou 0 
Se a segunda casa for 1 ou 2. Ele arredonda pra baixo (0) 
Se a segunda casa for 3 ou 4. Ele arredonda pra cima (5) 
Se a segunda casa for 6 ou 7. Ele arredonda pra baixo (5) 
Se a segunda casa for 8 ou 9. Ele arredonda pra cima (0)

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution

Há quem interessar, acho que descobri uma função simples e eficaz.

function MRound(val,prec:Double):Double;
begin
 Result:=Round(Val/Prec)*Prec;
end;

 

procedure TForm1.Button1Click(Sender: TObject);
var
  numero:Double;
begin
  numero := StrToFloat(Edit1.Text);
  Edit2.Text := FloatToStr(MRound(numero,0.05));
end;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2096 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.