Arredondamento

23/05/2003

2

Quero somar os lancamentos em um determinado arquivo.

select sum(valor) from tabsalarios where funcionario = 48

no DataBase Desktop o valor é retornado correto
EXEMPLO : 285,79

na query dentro do programa o valor retornado é
285,78

diferenca de 1 centavo, eu acho que é problema de arrendodamento
como solucionar isto?


Responder

Posts

23/05/2003

Okama

O Campo ´valor´ possui quantas casas decimais??


Responder

23/05/2003

Kaybueno

Olá Colega!

Acho que isso pode te ajudar. Dê uma olhada. :wink:


Arredonda as casas decimais de um valor Float:

function Arredonda(Valor : Real Decimais : Byte) : Extended;
var
i : Byte;
ML : string;
RR : string;
begin
ML := ´0.´;
for i := 1 To Decimais do
begin
ML := ML + ´0´;
end;
RR := FormatFloat(ML,Valor);
Result := StrToFloat (RR);
end;


Quando houver,Arredonda uma possivel terceira casa decimal em uma variável:

function RoundNum(Valor:Extended;Decimais:Integer):Extended;
var
I:Integer;
Multiplicador:Integer;
begin
if Decimais > 15 then
begin
Decimais := 15;
end
else if Decimais < 0 then
begin
Decimais := 0;
end;
Multiplicador := 1;
for I:=1 to Decimais do
begin
Multiplicador := Multiplicador*10;
end;
Result := round(Valor*Multiplicador)/Multiplicador;
end;


Responder