delphi四捨五入,delphi為什麼沒有四捨五入函式?

2022-03-06 12:54:35 字數 3437 閱讀 6914

1樓:天地惶惶

在delphi中使用round函式得到的答案有時與我們所預期的會不太一樣:

採用的是四捨六入五留雙。即當捨或入位大於或小於五時按四捨五入來處理,而當捨或入位等於五時,就要看前面一位是什麼,根據奇進偶不進,它總是返回乙個偶數值。

示例 結果

i:= round(11.5) 12

i:= round(10.5) 10

這種round其實是按照銀行家演算法,統計學上一般都用這種演算法,比傳統的"四捨五入"要科學。

如果要使用傳統的"四捨五入"方法,可以使用下面函式:

function roundclassic(r: real): int64;

begin

result:= trunc(r);

if frac(r) >= 0.5 then

result:= result + 1;

end;

2樓:匿名使用者

四捨五入用 round 函式:

edit13.text:=inttostr(round(strtofloat(edit13.text)));

就可以了。

希望我的回答對你有幫助!

你寫的有錯---括號錯了(strtoint(edit10.text) ,應該是如下這樣:

edit13.text:=floattostr((strtoint(edit10.

text)+strtoint(edit11.text)+strtoint(edit12.text))/3);

3樓:匿名使用者

round 四捨五入

trunc 取整

4樓:房恩巨集

vb裡是round函式。del沒用過。

delphi為什麼沒有四捨五入函式?

5樓:鳳菡軒

我倒覺得用format不錯:

format('15.2f%',表示式)

15表示總位數,2表示小數點後的位數!

6樓:徐金柱第一

round()函式有個缺點如下:round(5.5)=6 ,round(6.5)=6

也就是說當最後一位為5時,四捨五入的進製與否與前一位的奇偶有關,故為避免這種情況最好還是自己寫 ,下面是本人寫的,有點羅嗦,希望能幫到你

//四捨五入保留小數點後len位數

function tsys_njqlrb_f.roundclassic(r: real;len:integer): real;

vari,j:integer;

str:string;

begin

if trunc(r)=r then

begin

result:= trunc(r);

exit;

end;

result:= trunc(r);

str:=(copy(floattostr(r),length(inttostr(trunc(r)))+2,len));

str:='0.'+str;

result:=result+strtofloat(str);

j:=1;

for i:=1 to len do j:=j*10;

if length(copy(floattostr(r),length(inttostr(trunc(r)))+2+len,1))<>0 then

begin

if strtoint(copy(floattostr(r),length(inttostr(trunc(r)))+2+len,1)) >= 5 then

result:= result + 1/j;

end;

end;

7樓:匿名使用者

round是四捨六入五留雙

delphi 可以再控制台四捨五入???求大神幫助

8樓:猴煙鈾

procedure tform1.button1click(sender: tobject); var a,b:

real; begin if (edit1.text='') or (edit2.text='') then begin showmessage('小數與保留小數字數不能為空'); end else begin a:

=strtofloat(edit1.text); b:=strtofloat(formatfloat(edit2.

text,a)); edit3.text:=floattostr(b); end; end; procedure tform1.

edit1keypress(sender: tobject; var key: char); begin if not (key in ['0'..

'9','.',#8]) then begin showmessage('請輸入乙個小數'); key:=#0; end else begin end; end; procedure tform1.

edit2keypress(sender: tobject; var key: char); begin if not (key in ['0','.

',#8]) then begin showmessage('請輸入以0.0...開頭的要保留的小數字數');//例:

保留2位數:0.00 key:

=#0; end else begin end; end;

delphi的四捨五入詭異bug?

9樓:匿名使用者

不是,實際上是使用的問題

trunc 的引數是extended

如果申明為

vara: extended;

就不會有問題,實際上是型別轉換後有誤差

10樓:見習書生

delphi 預設的四捨五入函式採用的是"銀行家四捨五入"法..

可能跟這個有關..

具體說不上來..

11樓:景茹煒

你的delphi版本有問題吧。在delphi2010下輸出正常:

procedure tform1.btnaddalarmclick(sender: tobject);

vara:extended;

begin

showmessage('trunc('+format('%3.6f',[211.66 /0.

38])+')='+floattostr(trunc(211.66 /0.38)));

a:=211.66;

showmessage('trunc('+format('%3.6f',[a /0.38])+')='+floattostr(trunc(a /0.38))); //readln;

end;

都是557

33四捨五入怎麼算是多少,3333四捨五入

30四捨五入是指四和四以下的捨去,五以及以上的進一現在末位是3,小於5,應該捨去,所以是30 33.33333333333四捨五入多少?你好,33.33333333333四捨五入到整數等於33因為十分位是3,根據四捨五入的規則,應該捨去。望採納。33.33333333333四捨五入約等於33。33....

整數怎麼四捨五入數學,數學,四捨五入是什麼意思,怎麼理解。

四捨五入法,就是在計算時取近似值的一種方法,顧名思義,比四小的 包括四 要捨棄,比五大的 包括五 要向前一位進一。例如 235四捨五入到十位 240 你的是幾位數 如果是2位數的話,個位是4或以下的就省去,是5或以上就進製 數學,四捨五入是什麼意思,怎麼理解。在取小數近似數的時候,如果尾數的最高位數...

為啥是四捨五入不是五舍六入,為什麼是四捨五入,而不是五舍六入如題

四捨五入是一種精確度的保留法,與其他方法本質相同。但特殊之處在於,採用四捨五入,能使被保留部分的與實際值差值不超過最後一位數量級的二分之一。假如0 9等概率出現的話,對大量的被保留資料,這種保留法的誤差總和是最小的。這大概也是我們使用這種方法為基本保留法的原因吧。對數量級 誤差等概念不清楚的話請看 ...