Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глюк? [D7, XP]


Lamer6666 ©   (2008-11-19 00:13:00) 

Не пойму в чем проблема?
procedure TForm1.Button1Click(Sender: TObject);
 var X1,Step1,a:Double;Sy:String;
begin
 a:=2.3;
 X1:=0.2;
 step1:=0.2;
 while X1<=8do 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 девается??


han_malign   (2008-11-19 09:47:00) [1]

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


han_malign   (2008-11-19 09:44:00) [2]


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

- выбирать адекватную единицу измерения
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;


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

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

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;


Anatoly Podgoretsky   (2008-11-19 07:43:00) [4]

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

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


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


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

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

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


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


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

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


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

т.е. в прочих:
http://www.delphimaster.ru/cgi-bin/forum.pl?n=3&id=1226891927
тоже не долеко :)


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

> [2] DOjD   (19.11.08 00:19)

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


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


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

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


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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо