Форум: "Начинающим";
Текущий архив: 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