刚才没看清要求 这个是正确的: function RoundX(X:Double):integer; begin Result :=((Trunc(X)+5) div 10)*10; 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;//调用方法
实在看不懂啊~~~
function RoundX(X:Double):integer;
begin
Result :=(round(X) div 10)*10;
end;
2.div 10 整除10,把个位去掉
3.*10 还原值
x: Double;
begin
x := Round(Trunc(x) / 10) * 10;
end;先用Trunc,去掉小数点后面的东西,再除以10,然后再四舍五入,最后再乘10
如,146.3,trunc后变成146,除以10后变成14.6,再四舍五入变成15
最后再乘10
楼主要的是先去掉小数点,然后再对个位数四舍五入。
而你的是先四舍五入,再整除10,两步都错了。
四舍五入么就是外面的Round
x:=146.3
x/10=14.63
round(14.63)=15;
x=15*10=150
这个是正确的:
function RoundX(X:Double):integer;
begin
Result :=((Trunc(X)+5) div 10)*10;
end;
你这个效率更底点
var
s:string;
ef:extended;
begin
s:='#.'+StringOfChar('0',i);
ef:=StrToFloat(FloatToStr(f));
result:=StrToFloat(FormatFloat(s,ef));
end;//调用方法
Trunc(RoundFloat(146.3/10,0)*10.0);