简单问题,各位给看看,谢谢

sunnauq 2003-10-30 08:24:13

var
r:real;
begin
r:=68.667;
if r<>68.667 then
showmessage('aaaaaa')
end;
上面代码中r和68.667为什么不相等呢。我也试过用format,
r=strtofloat(format('%1.3f',[r]));
可是还是r和68.667还是不等,为什么呢,怎么解决。谢谢各位
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cash2000 2003-10-30
  • 打赏
  • 举报
回复
var
r:real;
begin
r:=68.667;
if abs(r-68.667)<0.000000001 then
showmessage('aaaaaa')
end;
whqcfp 2003-10-30
  • 打赏
  • 举报
回复
实数和实数不能直接比较,可以用中间变量法:

var
r, d: Real;

begin
r := 68.667;
d := 68.667;

if r = d then
ShowMessage('aaaa');
end;

就可以了!
wzds2000 2003-10-30
  • 打赏
  • 举报
回复
if FloatToStr(r)<>'68.667' then
showmessage('aaaaaa');
Goldteerfei 2003-10-30
  • 打赏
  • 举报
回复
我也不清楚为什么不行。但是这样的话可以行。
var
r:real;
begin
r:=68.667;
if FormatFloat('0.000',r)='68.667' then
showmessage('aaaaaa')
end;

执行结果是相等的。
确实是莫名其妙的问题,用这个方法吧。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧