请问浮点数的比较问题

tresa 2003-11-26 05:28:59
请问浮点数应该怎么比较呀?在Pascal语法书上,直接比较都可以,但是在Delphi6里运行总是提示“Invalid Floating Operation”,各位大虾帮忙呀,急!!!在线等待,解决就给分,分不够再加!
...全文
141 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tresa 2003-11-26
  • 打赏
  • 举报
回复
原来是我的其他地方的程序出错了,这样直接比较没有问题,谢谢各位大虾了,^_^,给分先!
xiaoqiang123 2003-11-26
  • 打赏
  • 举报
回复
向zblaoshu1979(周博)同志学习!
zblaoshu1979 2003-11-26
  • 打赏
  • 举报
回复
var
Y:Array[0..1023]of Double;
i,maxindex:Integer;
maxdata:Double;
begin
for i:=1 to 1023 do
begin
if formatfloat('0.00',Y[i])>formatfloat('0.00',maxdata) then
begin
maxdata:=Y[i];
maxindex:=i;
end;
end;
showmessage(Inttostr(maxindex));
end;
zblaoshu1979 2003-11-26
  • 打赏
  • 举报
回复
我试过好使了,你试一试吧
zblaoshu1979 2003-11-26
  • 打赏
  • 举报
回复
你用formatfloat('0.00',xx)做一下格式化再比较一下看看行不行
xiaoqiang123 2003-11-26
  • 打赏
  • 举报
回复
你这样是不行的!
因为Y[i]:=sin(10*pi*i/512);
这句是取整运算了!
tresa 2003-11-26
  • 打赏
  • 举报
回复
编译没有问题,但是运行的时候总是提示“非法浮点数操作”呀,不知道这是什么问题,难道同类型的浮点数比较也不行吗?
tresa 2003-11-26
  • 打赏
  • 举报
回复
不好意思,因为是从一个程序里节选的,所以有些变量都已经声明过并初始化了,比如说:maxdata,maxindex都初始化为0了。
pwzhu666 2003-11-26
  • 打赏
  • 举报
回复
楼上的对了啊
tresa 2003-11-26
  • 打赏
  • 举报
回复
掉了一句:
for i:=0 to 1023 do
Y[i]:=sin(10*pi*i/512);
tresa 2003-11-26
  • 打赏
  • 举报
回复
好的,代码如下:
var
Y:Array[0..1023]of Double;
i,maxindex:Integer;
maxdata:Double;
begin
for i:=1 to 1023 do
begin
if Y[i]>maxdata then
begin
maxdata:=Y[i];
maxindex:=i;
end;
end;
showmessage(Inttostr(maxindex));
end;
xiaoqiang123 2003-11-26
  • 打赏
  • 举报
回复
你的代吗呢?贴出来看看
xiaoqiang123 2003-11-26
  • 打赏
  • 举报
回复
是实数比较大小吗?

5,386

社区成员

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

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