Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Função de Arredondamento


doidopb
Go to solution Solved by doidopb,
  • Este tópico foi criado há 1414 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 to comment
Share on other 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 to comment
Share on other 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;

 

  • Like 1
Link to comment
Share on other sites

  • Este tópico foi criado há 1414 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.