读书人

一个怪有关问题应该是技术有关问题

发布时间: 2012-02-20 21:18:23 作者: rapoo

一个怪问题,应该是技术问题
我使用delphi时出现了下面的一个问题,不知道这个情况哥们儿们见过吗。是这样的我有两个double型的变量如下:
var
a1,a2,a3,a4:double;
begin
a1:=46.65;
a2:=45.6;
a3:=47.2;
a4:=46.15;
edit1.Text:=formatfloat( '0.0 ',a1-a2); //应该为1.1,可结果为1.0,这是怎么了
edit2.Text:=formatfloat( '0.0 ',a3-a4); //结果为1.1这是正确的
end;

以上是一个测试程序段,是因为我的类型定有不对还是什么原因,我认为这样的情况出现在财务软件上非同小可,希望高人指点一下。谢谢了。


[解决办法]
你又发一贴
别一个贴子已经回了
用Extended型变量
[解决办法]
浮点精度问题
[解决办法]
你在舍入的时候,没有作四舍五入处理.

edit1.Text:=formatfloat( '0.0 ',a1-a2+0.05); //因为你是保留一位小数,所以加0.05
edit2.Text:=formatfloat( '0.0 ',a3-a4+0.05); //
[解决办法]
Delphi的四舍五入和中国习惯是不同的,逢五时好像看上一位的单双决定是五入还是五舍.
[解决办法]
这样就可以了。
edit1.Text:=formatfloat( '0.0 ',a1-a2); //保留一位小数
edit2.Text:=formatfloat( '0.0 ',a3-a4); //

读书人网 >.NET

热点推荐