delphi编程四舍五入

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:21:35
在文本框里的数字,例如123.56,怎么能实现四舍五入,使123.56变成123.6

在delphi里面,其提供的是使用 round()来实现四舍五入,但是得到的结果往往不是我们想要的。
比如 round(11.5) ,可以得到12
但是 round(12.5) ,得到的也是12
为什么?这个要看小数点的前一位数,如果是奇数,则四舍五入结果正是我们想要的。如果是偶数,则不管小数点后面的是.6还是.9,都会舍去。其实这种Round是按照银行家的算法,统计学上一般都用这种算法,比传统的四舍五入要科学。只是我们日常生活没用摆了。
要实现我们传统的四舍五入,只有自己动手了。写一简单的函数:

function RoundClassic(R: Real): Int64;
begin
Result:= Trunc(R);
if Frac(R) >= 0.5 then
Result:= Result + 1;
end;

然后调用:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(RoundClassic(11.5));
Label2.Caption := IntToStr(RoundClassic(12.5));
end;

我觉得delphi中的四舍五入不是特别好用,一半使用的方法是
round(变量名*10)/10

round 不行