Delphi中的一些操作

保留小数位数:在http://blog.yesky.com/276/zabh/1531276.shtml这里有关于四舍五入的详细分析。摘过来一个函数可以用到的。
function RoundEx(Value: Extended; RoundMode: TFPURoundingMode = rmUp): Int64;
var
  RM: TFPURoundingMode;
begin
  RM := GetRoundMode;
  try
    SetRoundMode(RoundMode);
    Result := Round(Value);
  finally
    SetRoundMode(RM);
  end;
end;
经过测试发现上面的函数依然不能解决问题,上面函数设置了浮点数截取方向后,CPU会一直按照该方向进行截取并不是进行四舍五入的算法,举例:RoundEx(12.01)=13,这种算法适用于向上截取浮点数。
自行解决问题:
function RoundEx2(Value:real):Integer;
var
    fValue:Real;
begin
    fValue = Abs(Value);
    if (fValue-Trunc(fValue))<0.5 then
        Result := Trunc(fValue)
    else
        Result := Trunc(fValue)+1;
    end;
    if Value <0 then Result := -Result;
end;

posted on 2007-10-26 14:53  ainy360  阅读(270)  评论(0)    收藏  举报

导航