Delphi 四舍五入、只舍不入、只入不舍

来源:互联网 发布:中学生网络成瘾的特点 编辑:程序博客网 时间:2024/04/30 03:15
//TMP_FieldName:字段名称;XiaoShuWeiShu:小数位数;Flag_SheRu:舍入标识(0:四舍五入;1只舍不入;2只入不舍)
function TFrm_Shuju_PeiJian.Return_XiaoShuSheRu(Peij_no, TMP_FieldName: string;
  XiaoShuWeiShu, Flag_SheRu: Integer): Double;
var
  TMP_Old, TMP_New0, TMP_New1, TMP_New2: Double;
  TMP_XiaoShuTZ: Double;
begin
  case XiaoShuWeiShu of
    0: TMP_XiaoShuTZ := 1;
    1: TMP_XiaoShuTZ := 0.1;
    2: TMP_XiaoShuTZ := 0.01;
    3: TMP_XiaoShuTZ := 0.001;
    4: TMP_XiaoShuTZ := 0.0001;
  end;
  with Dm_Main.Query_temp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select ' + TMP_FieldName + ' from kucshp_zk where peij_no = ' + QuotedStr(Peij_no));
    Open;
    TMP_Old := Fields[0].AsFloat;

    Close;
    SQL.Clear;
    SQL.Add('select round( ' + FloatToStr(TMP_Old) + ',' + IntToStr(XiaoShuWeiShu) + ')');
    Open;
    TMP_New0 := Fields[0].AsFloat;

    Close;
    SQL.Clear;
    SQL.Add('select round( ' + FloatToStr(TMP_Old) + ',' + IntToStr(XiaoShuWeiShu) + ',1)');
    Open;
    TMP_New1 := Fields[0].AsFloat;
  end;
  if TMP_Old - TMP_New1 > 0 then
  begin
    TMP_New2 := TMP_New1 + TMP_XiaoShuTZ;
  end
  else
  begin
    TMP_New2 := TMP_New1;
  end;

  if Flag_SheRu = 0 then
    Result := TMP_New0
  else if Flag_SheRu = 1 then
    Result := TMP_New1
  else if Flag_SheRu = 2 then
    Result := TMP_New2;
end;
原创粉丝点击