Arredondamento de Variaveis - URGENTE !!!

15/12/2003

1

Estou precisando de alguma função de arredondamento que funcione !!!


Já usei o parâmetro que o delphi tem junto com a função ROUND (SETROUNDMODE), tbm ja usei o SIMPLEROUND, ROUNDTO, mas nenhum funciona !!!

Já usei tbm a seguinte função que peguei na internet:

=== INICIO DA FUNÇÃO ========

FUNCTION ROUNDNUM(VALOR:EXTENDED;DECIMAIS:INTEGER):EXTENDED;
VAR
I:INTEGER;
MULTIPLICADOR:INTEGER;
BEGIN
IF DECIMAIS > 15 THEN
DECIMAIS := 15
ELSE
IF DECIMAIS < 0 THEN
DECIMAIS := 0;
MULTIPLICADOR := 1;
FOR I:=1 TO DECIMAIS DO
MULTIPLICADOR := MULTIPLICADOR*10;
IF VALOR<>0 THEN
RESULT:=ROUND(VALOR*MULTIPLICADOR)/MULTIPLICADOR
ELSE
RESULT:=0;
END;

=== FIM DA FUNÇÃO ========

Mas nada funciona !

Façam o teste:


Exemplo de um valor que estou com problemas, a diferença é sempre de 1 centavo...

EXEMPLO:

Apliquem 5¬ em cima de 531,90

O resultado arredondando a terceira casa decimal é pra ser igual a 26,60; e as minhas funções me retornam 26,59.

Alguem tem a solução !!!

Quem tiver me ajude por favor...


Responder

Posts

15/12/2003

Xmagno

Veja se assim funciona:


Edit1.Text := FloatToStr(round(531.90 * 5 ) / 100 );


[]´s
xMagno.


Responder

16/12/2003

Marfred

Veja se assim funciona: Edit1.Text := FloatToStr(round(531.90 * 5 ) / 100 ); []´s xMagno.


Cara, deu certo, mas eu preciso de uma função de arredondamento tipo, uma função genérica ! desse jeito, a função fica limitada a esse tipo de calculo (porcentagem). Queria uma função onde vc passasse um numero pra ela e ela arredondasse seguindo a regra matematica, se a terceira casa decimal for 5 ela arredonda a segunda casa pra cima.

Ex: 1,605 => 1,61
1,6055 => 1,61
1,606 => 1,61

São apenas exemplos...

Valew kra !


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira