微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在delphi中保留小数点后两位?

如何解决如何在delphi中保留小数点后两位?

| 我必须从数据库表中选择一些列数据,并将此数据仅保留两位小数。我看到这个
sql.Strings = (\'select\' #9\'my_index \'#9\'his_index,\'...
#9是什么? 如何处理选择的数据以使其仅保留小数点后两位? 我对Delphi很陌生。 谢谢!     

解决方法

#9
是代码9,TAB的字符。 如果要将浮点值转换为带小数点后两位的字符串,请使用一种格式设置功能,例如
Format()
var
  d: Double;
  s: string;
...
d := Sqrt(2.0);
s := Format(\'%.2f\',[d]);
    ,
#9
是制表符。 如果
f
是浮点变量,则可以执行
FormatFloat(\'#.##\',f)
获得不超过2位小数的
f
字符串表示形式。     ,内部浮点格式例程仅适用于> 1的简单数字 对于通用小数位限制器,您需要做一些更复杂的事情,该限制器必须使用科学计数法在定点和值<1上均正确运行。 我用这个套路
function TForm1.Flt2str(Avalue:double; ADigits:integer):string;
var v:double; p:integer; e:string;
begin
  if abs(Avalue)<1 then
  begin
    result:=floatTostr(Avalue);
    p:=pos(\'E\',result);
    if p>0 then
    begin
      e:=copy(result,p,length(result));
      setlength(result,p-1);
      v:=RoundTo(StrToFloat(result),-Adigits);
      result:=FloatToStr(v)+e;
    end else
      result:=FloatToStr(RoundTo(Avalue,-Adigits));
  end
  else
    result:=FloatToStr(RoundTo(Avalue,-Adigits));
end;
因此,对于数字= 2,将1.2349舍入为1.23,将1.2349E-17舍入为1.23E-17     ,
function Round2(aValue:Real):Real;    
begin    
  x:=Round(aValue*100)/100;    
end;
    ,这为我工作:
Function RoundingUserDefineDecaimalPart(FloatNum: Double; NoOfDecPart: integer): Double;
Var
     ls_FloatNumber: String;
Begin
     ls_FloatNumber := FloatToStr(FloatNum);
     IF Pos(\'.\',ls_FloatNumber) > 0 Then
          Result := StrToFloat
            (copy(ls_FloatNumber,1,Pos(\'.\',ls_FloatNumber) - 1) + \'.\' + copy
                 (ls_FloatNumber,ls_FloatNumber) + 1,NoOfDecPart))
     Else
          Result := FloatNum;
End;
    ,
Function RealFormat(FloatNum: Double): string;
Var
     ls_FloatNumber: String;
Begin
     ls_FloatNumber:=StringReplace(FloatToStr(FloatNum),\',\'.\',[rfReplaceAll]);
     IF Pos(\'.\',ls_FloatNumber) > 0 Then
          Result :=
            (copy(ls_FloatNumber,2))
     Else
          Result := FloatToStr(FloatNum);
End;
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。