請問在Delphi中,四舍五入是用哪個函數?在線求助! (10分)

  • 主题发起人 主题发起人 frankie.dan
  • 开始时间 开始时间
F

frankie.dan

Unregistered / Unconfirmed
GUEST, unregistred user!
請問在Delphi中,四舍五入是用哪個函數?為什麼我用round不行呢?請市手指點!在線等候!
 
round
或者用format
 
http://delphibbs.com/delphibbs/dispq.asp?lid=2541138
 
round(x+0.000001);
 
to jianguobu
我這樣寫
round(((adoquery1.fieldbyname('bas').Value*adoquery1.fieldbyname('muber').Value+
adoquery1.fieldbyname('pws').Value*adoquery1.fieldbyname('muber').Value)/adoquery1.fieldbyname('crop').Value),3)
為什麼會有錯
 
function DoRound(Value: Extended): Int64;
procedure Set8087CW(NewCW: Word);
asm MOV Default8087CW,
AX FNCLEX FLDCW Default8087CW end;
const RoundUpCW = $1B32;var OldCW : Word;
begin OldCW := Default8087CW;
try
Set8087CW(RoundUpCW);
Result := Round(Value);
finally
Set8087CW(OldCW);
end;
end;

function RoundFloat(f:double;i:integer):double;
var
s:string;
ef:extended;
begin
s:='#.'+StringOfChar('0',i);
ef:=StrToFloat(FloatToStr(f));//防止浮点运算的误差
result:=StrToFloat(FormatFloat(s,ef));
end;
 
没有那么复杂,用ROUNDTO函数就行了,它在math单元中
 
var
a:double;
begin
a:=3.1416;
a:=RoundTo(a,-4);
ShowMessage(floatTostr(a));
end;
 
Round();四舍五入
Trunc();取整
trunc函数是去尾
round函数是取为最接近它的整数


 
在delphi里是simpleroundto(1.999,-2)=2.00
simpleroundto(1899,2)=1900
 
round不能保留小数位数
i为保留小数位
function myRound(x:real; i:integer) : real;
var
fact : integer;
begin
fact:=1;
while( i>0 ) do
begin
fact:=fact*10;
i:=i-1;
end;
myRound := round(x*fact)/fact;
end;
 
RoundTo
//加入Math单元
uses
Math;
 
后退
顶部