要做一个功能:小数位的第二个的大于0则进位功能函数如下:function JWRound(x:real):Real;
var tmp:real;
begin
tmp:=x*10.00 ;
tmp:=tmp+0.90;
tmp:=Trunc(tmp);
//Result := Trunc(x * 10 + 0.9) / 10 ;
Result:= tmp / 10.00;end;但是个怪问题:如
X=592。31 结果就是 592。4
但输出结果是:592。3
tmp:=trunc(tmp) 结果为:5923不知是什么原因?急!!
var tmp:real;
begin
tmp:=x*10.00 ;
tmp:=tmp+0.90;
tmp:=Trunc(tmp);
//Result := Trunc(x * 10 + 0.9) / 10 ;
Result:= tmp / 10.00;end;但是个怪问题:如
X=592。31 结果就是 592。4
但输出结果是:592。3
tmp:=trunc(tmp) 结果为:5923不知是什么原因?急!!
解决方案 »
- 在局域网查询5千条数据会卡吗?
- 如何截获WebBrowser控件的封包?
- 如何得到焦点所在的控件的name
- 一个简单问题高分求解…………!!
- 如何将datagrid中的0,显示为空白
- InstallShield Express for delphi 在delphi的那里,为什么我装的都没有!
- 有南京的兄弟吗?我想买《delphi4编程技术内幕》,就是Charlie Calvert那本精华。
- 有没有方法,当检测到与internet连通时,立刻启动我的程序
- 请问初学Delphi 看什么书好?
- 怎么会这样?
- 有做物流业ERP的吗?
- 急!!!急!!!急!!!急!!!急!!!关于tdbgrideh 列排序问题!!!
592.31 實際 可能是592.309999999, 一個無限不循環小數,所以你這樣的算法有問題改為這樣:
function JWRound(x:real):Real;
begin
x:= x*10 ;
x:= Ceil(x);
Result:= x / 10;
end;
CEIL是一个往大的取我要加0。9
var
tmp:real;
begin
tmp := x * 10.00 ;
tmp := tmp + 0.90;
//tmp := Trunc(tmp);
//Result := Trunc(x * 10 + 0.9) / 10 ;
Result := tmp / 10.00;
end;在浮点型数据都是比较精度的
实数是个进似数,像楼上说的592.309999999
如果你的小数位<=4,那用Currency型比较好