![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему 0.20 <= 0.20 ложь??? [D7, WinXP]
Zheksik © (2007-12-07 18:55:00)Имеется цикл:
while 0.15 <= 0.20 do
begin
...
...+0.01
end;
Почему 0.20 не входит в этот цикл???
Amoeba (2007-12-09 23:00:00) [1]
> homm © (09.12.07 20:21) [15]
>
> > [14] Amoeba © (09.12.07 20:18)
> > Я читал эту статью еще в 2001 году.
>
> Дак еще нужно было кроме статьи и второй пост прочитать
> ;)
>
Читал. Но поскольку после него обсуждение зачем-то продолжилось, хотя ветку уже нужно было закрывать, посчитал не лишним еще раз напомнить об этой публикации.
homm (2007-12-09 20:21:00) [2]> [14] Amoeba © (09.12.07 20:18)
> Я читал эту статью еще в 2001 году.
Дак еще нужно было кроме статьи и второй пост прочитать ;)
Amoeba (2007-12-09 20:18:00) [3]
> homm © (09.12.07 20:09) [13]
>
> > [12] Amoeba © (09.12.07 19:33)
> > Автору вопроса читать эту статью до полного просветления:
>
>
> Это ты во втором посте прочитал, ага?
Я читал эту статью еще в 2001 году.
homm (2007-12-09 20:09:00) [4]> [12] Amoeba © (09.12.07 19:33)
> Автору вопроса читать эту статью до полного просветления:
Это ты во втором посте прочитал, ага?
Amoeba (2007-12-09 19:33:00) [5]Автору вопроса читать эту статью до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
homm (2007-12-07 21:28:00) [6]> [5] Zheksik © (07.12.07 19:14)
> DeBUGger13 (07.12.07 19:10) [4]
> игнор
Заклинание не подействовало :)
> while 0.15 <= 0.20 do
> begin
> ...
> ...+0.01
> end;
while a <= 20 do begin
x := a / 100;
.....
inc(a);
end;
@!!ex (2007-12-07 20:11:00) [7]> [7] Zheksik © (07.12.07 19:26)
ПОмойму первое чему учат в программировании, так это тому, что дробные числа нельзя сравнивать напрямую. Всегд сравнивают отличие на фиксированную E.
@!!ex (2007-12-07 20:11:00) [8]Под Е имелось ввиду Эпсилон.
Efir (2007-12-07 19:31:00) [9]Ну так и использовать в циклах сравнение float переменных тоже не очень правильно. Ведь уже написали, что
> 0.2000000001 <= 0.20 = false
Zheksik (2007-12-07 19:26:00) [10]Efir (07.12.07 19:22) [6]
я так в принципе и сделал, но кажется, что это не очень правильно, а значит может вылезти где угодно...
Efir (2007-12-07 19:22:00) [11]Если это это так напрягает, то сделай так:
while 0.15 <= 0.205 do
begin
...
...+0.01
end;
Zheksik (2007-12-07 19:14:00) [12]DeBUGger13 (07.12.07 19:10) [4]
игнор
DeBUGger13 (2007-12-07 19:10:00) [13]В http://www.delphimaster.ru/nuts/nuts.html
КАК НЕ Входит? еще как входит!!
И 0.20 и 256 и 1024 и...
Книжки надо умные читать и думать тоже иногда...
Zheksik (2007-12-07 19:07:00) [14]я тоже думал, что так, но я делал так: при
а := 0.20 и b := 0.20;
RoundTo(a, -2);
RoundTo(b, -2);
Эффект тот же
Goric (2007-12-07 19:06:00) [15]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
Плохиш (2007-12-07 19:02:00) [16]0.20 00000001<= 0.20 = false