本帖最后由 W9757 于 2012-11-28 14:30:20 编辑

解决方案 »

  1.   

    该例程中没有考虑数据的合法性。假设都是理想数据。procedure TForm1.Button1Click(Sender: TObject);
    var sl:TStrings;
         i,j:integer;
         a,b:double;
         s:string;
       begin
         s:='2.5';
         a:=abs(strtofloat(s));
         j:=0;
         sl:=TStringList.Create;
         sl.Delimiter:=',';
         sl.CommaText :='1,3,5';
         for i := 0 to sl.Count-1 do
         begin
          b:=abs(strtofloat(sl.Strings[i])-strtofloat(s));//取差的绝对值
          if a>b then begin  //如果离S近就更换当前值
           a:=b;
           j:=i;
           end;
         end;
         showmessage(sl.Strings[j]);
         sl.Free;   //求在mya中的接近的3.
       end;
    end.