Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.28;
Скачать: CL | DM;

Вниз

Глюк?   Найти похожие ветки 

 
Lamer6666   (2008-11-19 00:13) [0]

Не пойму в чем проблема?
procedure TForm1.Button1Click(Sender: TObject);
 var X1,Step1,a:Double;Sy:String;
begin
 a:=2.3;
 X1:=0.2;
 step1:=0.2;
 while X1<=8 do begin
   Memo1.Lines.Add("x="+FloatToStr(X1));
   X1:=X1+step1;
 end;
end;


Результат:
...............
x=7; y=
x=7,2; y=
x=7,4; y=
x=7,6; y=
x=7,8; y=

Куда x=8 девается??


 
Anatoly Podgoretsky ©   (2008-11-19 00:18) [1]

> Lamer6666  (19.11.2008 0:13:00)  [0]

Потому что 0,2 невозможно точно представить в машинном виде.


 
DOjD   (2008-11-19 00:19) [2]


> Потому что 0,2 невозможно точно представить в машинном виде.

Что делать тогда? :(


 
{RASkov} ©   (2008-11-19 00:27) [3]

> [2] DOjD   (19.11.08 00:19)

Рядом где-то ветка про сравнение вещественных чисел...


 
{RASkov} ©   (2008-11-19 00:32) [4]

т.е. в прочих:
http://delphimaster.net/view/15-1226891927/
тоже не долеко :)


 
Lamer6666   (2008-11-19 00:39) [5]


> {RASkov} ©   (19.11.08 00:32) [4]

Спасиб, читаю!


 
Германн ©   (2008-11-19 00:43) [6]


> Что делать тогда? :(

Читать:
1.  http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
2. По ссылке, которую дал  {RASkov} ©   (19.11.08 00:32) [4]

Переделать цикл с учётом прочитанного и понятого. И с учётом самой задачи. Ибо не может быть такой реальной т.е. физической задачи, где точно указывалось бы вещественное число, которое нужно получить в результате!


 
Anatoly Podgoretsky ©   (2008-11-19 07:43) [7]

> Германн  (19.11.2008 0:43:06)  [6]

Может - это проверку знаний в университете.
Не стоит забывать, что сейчас большинство вопросов, это не помощь в прямом виде, а решение этих задач как халява.


 
Григорьев Антон ©   (2008-11-19 09:43) [8]

В вашем случае правильнее всего перейти к циклу с целым числом:

procedure TForm1.Button1Click(Sender: TObject);
var
 X1, Step1, a: Double;
 Sy: String;
 I: Integer;
begin
 a:=2.3;
 step1:=0.2;
 for I := 1 to 40 do
 begin
   X1 := step1 * I;
   Memo1.Lines.Add("x="+FloatToStr(X1));
  end;
end;


 
han_malign ©   (2008-11-19 09:44) [9]


> Что делать тогда? :(

- выбирать адекватную единицу измерения
var X1,Step1,a:integer;Sy:String;
begin
  a:=2300;
  X1:=200;
  step1:=200;
  while X1<=8000 do begin
     Memo1.Lines.Add("x="+FloatToStr(X1/1000));
     X1:=X1+step1;
  end;
end;


 
han_malign ©   (2008-11-19 09:47) [10]

есть еще встроенный тип Currency



Страницы: 1 вся ветка

Текущий архив: 2008.12.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1226862680
Лешка
2008-11-16 22:11
2008.12.28
Картинка из интернета


4-1202741795
dreamse
2008-02-11 17:56
2008.12.28
Как получить список работающих на данный момент DLL от всех


15-1225092772
Добежал
2008-10-27 10:32
2008.12.28
Access violation... in module "coreide70.bpl"


15-1225078082
Slider007
2008-10-27 06:28
2008.12.28
С днем рождения ! 25 октября 2008 суббота


15-1225214648
Виит
2008-10-28 20:24
2008.12.28
C# цикл