Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
11-1196443969
kenshin1101
2007-11-30 20:32
2008.12.28
KOL Unicode Failed


8-1188655791
Dr. Andrew
2007-09-01 18:09
2008.12.28
Как программно вызвать палитру цветов от кнопки как в MS Word?


2-1227108107
snake-as
2008-11-19 18:21
2008.12.28
Динамическое создание компонентов и использование в виде массивов


15-1224858487
Petr V. Abramov
2008-10-24 18:28
2008.12.28
Не форматируется винт


15-1225269411
Програмист
2008-10-29 11:36
2008.12.28
EhLibEdit, EhLibCombobox, свойство Flat




   Наверх