比如四舍五入。
1.2->1
1.6->2谢谢!!
1.2->1
1.6->2谢谢!!
解决方案 »
- 从内存读取的文件乱码问题
- 怎样屏蔽或取消双击树型节点的展开与收缩功能?
- 高分求思路!关于代理服务器
- IdTcpServer/Client中,IdTcpServer.Threads是不是指连接到服务器的所以客户端?
- 想删就删吧!!!!真受不了这种感觉,槽糕透项了
- 如何动态添加控件,像我要界面已经定义了一个按钮b1,如果动态复制多一个按钮,要怎么做
- ComonentEditor 高手请进
- 请问怎样声明createDC
- 怎么得到ClientDataSet的一段数据,比方说从第3条到第5条记录,再把它添加到另一个ClientDataSet
- ADO+ACCESS编写数据库软件怎么实现数据库的压缩优化等。
- !!!!不懂 新人学习query组件遇到问题
- 关于遍历文件夹在treeView中生成目录树!!!
begin
result:=int(d*100+0.5)/100;
end;
floattostr
strtoint
var
Res :real;
Obj :integer;
begin
Obj := strtoint(floattostr(Res));
end;
Round(1.6) => 2
Delphi的四舍五入函数Round有BUG,无法正常工作。对于XXX.5的情况,整数部分是奇数,那么会Round Up,偶数会Round Down,例如:x:= Round(17.5) = x = 18x:= Round(12.5) = x = 12请使用下面的函数代替Round:function DoRound(Value: Extended): Int64;procedure Set8087CW(NewCW: Word);asmMOV Default8087CW,AXFNCLEXFLDCW Default8087CWend;constRoundUpCW = $1B32;varOldCW : Word;beginOldCW := Default8087CW;trySet8087CW(RoundUpCW);Result := Round(Value);finallySet8087CW(OldCW);end;end;
1。用floattostr和strtoint两次转换的方法不行,strtoint不能转非整形字符(如1.2)。
2。Round的确是整数部分是奇数,那么会Round Up,偶数会Round Down,但仔细分析一下,也许这是Delphi经过精心考虑才这样做的,因为X.5是在X和X+1中间,究竟舍还是入?所以用概率的方法,遇到奇数近偶数舍。如果程序里有很多四舍五入的地方,这样应更合理。但如果要严格按照定义的四舍五入,可以用chijingde写的函数。由于我不需要很严格,所以我最后选择直接使用Round。谢谢大家!等会发分。