如何进行四舍五入使12.449=13,每一位都要进行四舍五入
解决方案 »
- 低调的回来了,散点分
- Delphi如何按年月查询
- 关于文件搜索的问题和一个关于listview的问题 在线等!!!!
- 设置文件夹安全?急急急!!
- 怎么向paradox数据库中导入excel表格中的数据呢?
- 请教ADOQuery中以时间为条件查询的SQL格式
- 一棵树treeview,选中一个节点,怎么样得出以它为根节点的全部叶子?
- 兄弟们过年好!有人有显示、保存、打印数学公式的程序/代码吗?给点意见也行...急啊...
- 关于 类型variant 接口名称的调用 问题
- 问题3:如何生成象个人档案表的报表?
- DELPHI三层数据库架构设计方案(原创)
- 关于QUICKREPORT报表的问题,在线等答案!
var s:string;
i:integer;
begin
s:=FloatToStr(x);
i:=length(s); while (s[i-1]<>'.')and(i>0) do //小数点后的每一位四舍五入
begin
if s[i]>='5' then
s[i-1]:=Chr(Ord(s[i-1])+1);
i:=i-1;
end;
if s[i]>='5' then
s[i-2]:=Chr(Ord(s[i-2])+1);
result:=Trunc(StrToFloat(s));
end;
begin
x:=12.449;
y:=ceil(12.449);
end;
var
i : integer;
begin
i := 100000000;
while i>=10 do begin
R := Round(R*i)/I + 0.000000000001;
i := i DIV 10;
end;
Result := Round(R);
end;为什么要加0.000000000001,因为调用Round(14.5)时得到结果是14,如果是14.500000000001得到就是15,晕得很哈。
以上函数只能处理小数点后8位小数
你看看Ceil的实现过程
function Ceil(const X: Extended): Integer;
begin
Result := Integer(Trunc(X));
if Frac(X) > 0 then
Inc(Result);
end;
只要有小数就加进位,不是四舍五入