这么一段简单的代码,
procedure TMainForm.Button6Click(Sender: TObject);
var f1,f2:real ; i,j:integer;
begin
f1:=35.43;
f2:=f1-35.0; i:=trunc(Frac(f2)*10);
j:=trunc(Frac(f2*10)*10);
showmessage(inttostr(i));
showmessage(inttostr(j));
end;
自己手算 应该分别是4和3 但是运行显示的却是4和2
请问是怎么回事啊???????????????怎么样能够得到正确的答案呢?
procedure TMainForm.Button6Click(Sender: TObject);
var f1,f2:real ; i,j:integer;
begin
f1:=35.43;
f2:=f1-35.0; i:=trunc(Frac(f2)*10);
j:=trunc(Frac(f2*10)*10);
showmessage(inttostr(i));
showmessage(inttostr(j));
end;
自己手算 应该分别是4和3 但是运行显示的却是4和2
请问是怎么回事啊???????????????怎么样能够得到正确的答案呢?
解决方案 »
- 请各位高手提供意见:将VS2003的C#程序迁移到VS2005有必要吗?
- 小伍也当爹了,这世道变了...
- Delphi 中的Function 可不可以返回一个DataSoure呢?
- 有用borland tcc 的朋友吗,我问个问题
- 用什么方式显示一个form比较好?
- 完全免费-CSDN Direct精简版,看贴飞快,保存帖子为HTML页面,程序内嵌回复,自动登陆……
- 用DBgrid显示返回符合条件的记录,当用户有对对DBgrid中的数据有修改时?
- 百思不得其解,怎么会错呢。有关API,烦大侠看一下。
- 问一个简单的问题:如何把string类型转换成byte类型?
- 如何用代码控制DBGrid滚动条位置
- 大家有没有见过做软件开发的还要担保?
- 求区域填充的八联通算发?
你可以自己看看
showmessage(Floattostr(Frac(f2*10))); showmessage(inttostr(i));
showmessage(inttostr(j));
help!
begin
f1:=35.43;
f2:=f1-35.0; i:=trunc(Frac(f2)*10);
j:=trunc(Frac(f2*10)*10);
showmessage(floattostr((Frac(f2)*10)));
showmessage(floattostr((Frac(f2*10)*10))); showmessage(inttostr(i));
showmessage(inttostr(j));
end;
好像是有问题啊,向大家学习中
f1:=35.43;
f2:=f1-35.0;
f2:=f2+0.000000000000001;
i:=trunc(Frac(f2)*10);
j:=trunc(Frac(f2*10)*10);
showmessage(inttostr(i));
showmessage(inttostr(j));
var delt:real;
...
delt:=1e-12;
i:=trunc(Frac(f2)*10+delt);
j:=trunc(Frac(f2*10)*10+delt);