Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1226928481
noob_one
2008-11-17 16:28
2008.12.28
Query.Eof или Query.recordcount.


1-1204918080
Vortigont
2008-03-07 22:28
2008.12.28
Как сделать в RichEdit нумерацию строк в margin?


15-1224872879
Александиров
2008-10-24 22:27
2008.12.28
Термин ИВТ


15-1224145808
Kerk
2008-10-16 12:30
2008.12.28
MMP 24 октября


15-1225096261
koha!
2008-10-27 11:31
2008.12.28
А кто может объяснить, а что это може означать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский