Главная страница
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.018 c
2-1226565058
дед Маздай
2008-11-13 11:30
2008.12.28
Посылка строки из TThread в основной поток


15-1225111586
frgs
2008-10-27 15:46
2008.12.28
Как зоставить сервис не обрываться ?


2-1226840008
Ruzzz
2008-11-16 15:53
2008.12.28
как быстро загрузить в Listview до 500 000 записей?


4-1202837079
Dmitrij
2008-02-12 20:24
2008.12.28
Есть чужое приложение, нужно определить состояние Tbutton


15-1225351537
Dennis I. Komarov
2008-10-30 10:25
2008.12.28
Программисты требуют от Медведева праздник