Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизDelphi bugs Найти похожие ветки
← →
Saintdmitry © (2004-10-12 23:39) [0]Недавно пришлось программировать на Delphi7(6) и вот, что обнаружил:
- нет сравнения real c константами и Extended
- не работает TDbComboBox
Что-то мне подсказывает, что это лишь малая часть, может кто сможет дополнить, было бы очень интересно услышать что меня ещё ждёт.
← →
TUser © (2004-10-12 23:45) [1]
> Saintdmitry
Одит Великий Дима тут уже есть. Но изменеия уже заметны, что отрадно.
По сабжу - кода нет, ничего понять нельзя - чего не работает и как не сравнивается?
← →
KSergey © (2004-10-13 07:14) [2]Про какой-то ComboBox помнится было обсуждение - в D7 действительно имеется ошибка. Поправлена в сервиспаке.
Вот только о том ли речь?? Да и чтобы прям вот "совсем не работало"?? Что-то с трудом верится.
← →
Saintdmitry © (2004-10-13 08:46) [3]KSergey, а вы с ним работали?
Судя по исходным кодам он мало отличается от TComboBox.
TUser, вот пример:
E : Extended;
R : real;
E := 1.1;
R := 1.1;
E - R порядка 1.7 * exp(-17);
т.е. (E = R) - ложь
← →
Fedia © (2004-10-13 08:56) [4]Saintdmitry © (13.10.04 08:46) [3]
есть такая буква в этом слове :)
Скажу больше, даже в случае сравнения переменных одного типа (н-р Double), с одинаковыми значениями, могут возникать такие глюки, но это легко можно обойти: if abs(E-R)>0.000001 then. И таких глюков в Delphi немного, в процентах от первоклассно работающего стандартного кода.
← →
Kolan © (2004-10-13 10:34) [5]Так E : Extended;
R : real;
E := 1.1;
R := 1.1;
E - R порядка 1.7 * exp(-17);
т.е. (E = R) - ложь
может это из за представления чисел
Например
var
e:real;
begin
e:=0.1;
if e=0.1 then ...
else
...
так вот будет не равно из за того что intel работает только с 10-байтным типом Extended. И в e вместо 0.1 будет то что можно представить в виде конечной 2 дроби
← →
Amoeba © (2004-10-13 11:07) [6]
> - нет сравнения real c константами и Extended
Так и должно быть. Дельфи здесь ни при чем, сие есть так сказать "закон природы". Читаем статью "Неочевидные ососбенности вещественных чисел" http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
до полного просветления.
← →
TUser © (2004-10-13 11:12) [7]
> if abs(E-R)>0.000001 then. И таких глюков в Delphi немного
Это не глюк, а фича. Есть разница 10^-17, значит числа не равны. Другой вопрос, поечему такая разница появилась.
← →
Amoeba © (2004-10-13 11:25) [8]
> Другой вопрос, поечему такая разница появилась.
Это фича, но не Delphi, а сопроцессора.
См. ссылку в Amoeba © (13.10.04 11:07) [6]
← →
Saintdmitry © (2004-10-13 11:57) [9]Приведите пример ещё языков. которые такой фичей страдают?
Мне на ум ничего не приходит.
← →
Amoeba © (2004-10-13 12:02) [10]
> Saintdmitry © (13.10.04 11:57) [9]
> Приведите пример ещё языков. которые такой фичей страдают?
> Мне на ум ничего не приходит.
Языки здесь абсолютно ни при чем! Это ФИЧА НЕ ЯЗЫКА А ЖЕЛЕЗА! Еще раз настоятельно советую прочесть это http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374 и не страдать фигней.
← →
KSergey © (2004-10-13 13:12) [11]Этим страдают не языки, а авторы программ.
PS
На это я налетел в самой первой своей написанной проге на васике... но это уже другая история...
← →
Anatoly Podgoretsky © (2004-10-13 13:26) [12]Меня еще в первом классе учили, не надо сравнивать числа с плавающей запятой.
← →
Плохиш © (2004-10-13 13:36) [13]
> Anatoly Podgoretsky © (13.10.04 13:26) [12]
Как за это время школа изменилась :-)
← →
KSergey © (2004-10-13 14:27) [14]> [12] Anatoly Podgoretsky © (13.10.04 13:26)
> Меня еще в первом классе учили, не надо сравнивать числа
> с плавающей запятой.
... на равенство
На неравенство - можно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c