送分啦!请问怎么把一个浮点数四舍五入??(50分)

  • 主题发起人 主题发起人 tnl
  • 开始时间 开始时间
T

tnl

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎么把一个浮点数四舍五入??
 
edit1.text := formatFloat('#,##0.00', 247.785);
 
看help中round涵数
round(1.4)=1;
rount(1.5)=2;
 
strtofloat(formatfloat('0.000', 123.12653286));
round(123.12653286 * 1000) / 1000


 
前两天我正好碰到这个问题,解决如下:
function yunsuan(const v:double):integer;
var x:integer;
begin
x:=trunc(v);
if v-x=0.50 then result:=round(v)+1
else result:=round(v);
end;
 
哇,第一次提问题,就有这么多高手回答,真是谢了。多种答案,待我慢慢验证。
 
上次回答答案不正确,应该改为:
function yunsuan(const v:double):integer;
var x:integer;
begin
x:=trunc(v);
if v-x=0.50 then result:=x+1 // result:=round(v)+1
else result:=round(v);
end;

原理如下:
round()函数并不能说是四舍五入函数。因为在小数点前的数是奇数(.5)就会进位,是偶数(.5)就不会进位。
这是一种比较科学的计数法。
用上面的自定义函数才会产生真正的四舍五入值。
 
后退
顶部