本帖最后由 m3905 于 2013-09-25 08:37:53 编辑

解决方案 »

  1.   

    Var I,J,K:Double;
    begin
        I := StrToFloat(Edit1.Text);
        J := ((0.1 + (10000 - I)) * (0.2) / 9999) * I;
        Label1.Caption :=  FloatToStr(J);
    end;感谢回复 貌似不对 在I=1的时候 数值并不是0.3 10000的时候 也不等于3000 晕啊
      

  2.   

    ((0.1 + (10000 - I)) * (0.2) / 9999) * II等于1的时候,(0.1 + 9999 * 0.2 /9999) * 1 ,约分实际计算会有误差的,
    同理可得10000,J是1000
      

  3.   

    Quote: 引用 3 楼 m3905 的回复:

    Var I,J,K:Double;
    begin
        I := StrToFloat(Edit1.Text);
        J := (0.1 + (10000 - I) * (0.2) / 9999) * I;
        Label1.Caption :=  FloatToStr(J);
    end;
      

  4.   

    I := StrToFloat(Edit1.Text);
    改为
    I := random(10000)+1;
      

  5.   

    // 特殊情况 单独考虑
    function RanIJ( ):string;
    var
     tmp, v1, v2, cv: double;
    begin
     randomize();
     cv := random();
     v1 := 10000*(1 - cv);
      if cv < 0.5 then
      begin
        tmp := v1 * 0.3 - cv*v1*0.2;
      end
      else
        tmp := v1 * 0.1 + cv*v1*0.2;
      result := floattostr(v1) + ',' + floattostr(tmp);
    end;