请教,怎么让浮点数保留2位小数

jefferwind 2005-06-20 11:00:39
同上
...全文
472 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2005-06-21
  • 打赏
  • 举报
回复
不知道各位有没试过
RoundTo(2.565,-2)
RoundTo(2.555,-2)
的值?
偶有解决过此问题,但是对于小于2.0的数却也无奈。
===============================================
uses
math;
function DRound(Value:double;cnt:byte):double;
var
fTmp:double;
nTmp:double;
k:int64;
begin
Result:=Value;
if cnt>18 then exit;
nTmp:=Power(10.0,cnt);
fTmp:=0.5;
fTmp:=fTmp/nTmp;
Result:=fTmp+Result;
Result:=Result*nTmp;
k:=0;
asm
fld qword ptr Result
//__ftol begin
push ebp
mov ebp,esp
LEA ESP,k
wait
fstcw word ptr [ebp-$04]
wait
mov al,[ebp-$03]
or [ebp-$04],$00000c01
fldcw word ptr [ebp-$04]
fistp qword ptr [ebp-$0c]
mov [ebp-$03],al
fldcw word ptr [ebp-$04]
mov eax ,[ebp-$0c]
mov edx,[ebp-$08]
mov esp,ebp
pop ebp
//__ftol end
push esp
lea esp,k
mov [esp],eax
add esp,4
mov [esp],edx
mov esp,ebp
pop esp
fild qword ptr k
fstp qword ptr Result
fld qword ptr nTmp
fdivr qword ptr Result
fstp qword ptr Result
end;
end;
FCU 2005-06-21
  • 打赏
  • 举报
回复
就用FORMAT吧! 别把问题复杂化!
firstshine 2005-06-21
  • 打赏
  • 举报
回复
注意,要Use Math

var
a,b:Double;
begin
a:=1.23456;
b:=RoundTo(a,-2);
ShowMessage(FloatToStr(b));
end;
peterruan226 2005-06-21
  • 打赏
  • 举报
回复
同意fjswge
adequate_c 2005-06-20
  • 打赏
  • 举报
回复
dd_str:=25.56334;
floattostrf(dd_str,fffixed,10,2);///保留两位小数
/////over
jerrie_1 2005-06-20
  • 打赏
  • 举报
回复
同意楼上的,如需更多,请看下面
Format string- 1234 -1234 0.5 0
1234 -1234 0.5 0
0 1234 -1234 1 0
0.00 1234.00 -1234.00 0.50 0.00
#.## 1234 -1234 .5
#,##0.00 1,234.00 -1,234.00 0.50 0.00
#,##0.00;(#,##0.00) 1,234.00 (1,234.00) 0.50 0.00
#,##0.00;;Zero 1,234.00 -1,234.00 0.50 Zero
0.000E+00 1.234E+03 -1.234E+03 5.000E-01 0.000E+00
#.###E-0 1.234E3 -1.234E3 5E-1 0E0
fjswge 2005-06-20
  • 打赏
  • 举报
回复
edit1.text:=formatfloat('0.00',1.123);

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧