Subject | Re: Firebird ROUND |
---|---|
Author | Adam |
Post date | 2005-01-15T23:16:52Z |
You can create your own version of the round function using a UDF. I
am not sure / I could not find whether firebird already has this
function you are talking about.
If you are using Delphi, the main gotcha in creating your own round
function is that Delphi uses bankers rounding by default, where *.5
is rounded to the closest even number, not upwards as most people are
used to. You may want to use this function
function RoundCorrect(R: Real): LongInt;
begin
Result:= Trunc(R); // extract the integer part
if Frac(R) >= 0.5 then // if fractional part >= 0.5 then...
Result:= Result + 1; // ...add 1
end;
your function would look something like this
function MyRound(Value : Double; Prec : Integer) : Double;
begin
if Prec < 0 then Prec := 0;
Result := RoundCorrect(Power(10, Prec) * Value) / Power(10,
Prec);
end;
--- In firebird-support@yahoogroups.com, "Sebastian J."
<jsebastianb00@y...> wrote:
that I wanna.
am not sure / I could not find whether firebird already has this
function you are talking about.
If you are using Delphi, the main gotcha in creating your own round
function is that Delphi uses bankers rounding by default, where *.5
is rounded to the closest even number, not upwards as most people are
used to. You may want to use this function
function RoundCorrect(R: Real): LongInt;
begin
Result:= Trunc(R); // extract the integer part
if Frac(R) >= 0.5 then // if fractional part >= 0.5 then...
Result:= Result + 1; // ...add 1
end;
your function would look something like this
function MyRound(Value : Double; Prec : Integer) : Double;
begin
if Prec < 0 then Prec := 0;
Result := RoundCorrect(Power(10, Prec) * Value) / Power(10,
Prec);
end;
--- In firebird-support@yahoogroups.com, "Sebastian J."
<jsebastianb00@y...> wrote:
> Hi to everyone, I have a question... I need to round a decimalnumber as I used to do in SQL Server for example:
>Function only acept 1 parameter and I can't pass the decimals number
> Select Round(6.3254, 2) as Value_Rounded From MyTable
>
> The result looks like this:
> -------
> 6.3300
>
>
> How can I do this in FB, I was using the FB_UDF but the ROUND
that I wanna.
>
> Thanks a lot.....
>
> Regards, Antonio
>
>
> ---------------------------------
> Do you Yahoo!?
> Yahoo! Mail - You care about security. So do we.
>
> [Non-text portions of this message have been removed]