如何解决如何在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 举报,一经查实,本站将立刻删除。