Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Возникает EUnderflow там, где ИМХО не должна


Автор: zalex 11.12.2008, 18:48
Доброе время суток.
Возникает ИС класса EUnderflow там, где судя по мануалу и логике математики быть её не должно.

Код
Код

var a,b,c:Extended;
begin
SetExceptionMask(GetExceptionMask-[ExUnderFlow]);
a:=3.6e-4950;
b:=a;
c:=a+b;
ShowMessage(FloatToStr(c));


При выполнении строки 
Код

c:=a+b;


возникает EUnderflow. Но почему?!! Ведь результат должен быть 2*(3.6e-4950), что явно БОЛЬШЕ минимально представимого значения для Extended.


Автор: ama_kid 12.12.2008, 00:20
Цитата(zalex @  11.12.2008,  19:48 Найти цитируемый пост)
Ведь результат должен быть 2*(3.6e-4950), что явно БОЛЬШЕ минимально представимого значения для Extended.
Есть подозрение, что самое низкое значение экспоненты для типа http://www.delphisources.ru/pages/faq/faq_delphi_basics/Extended.php.html = 3.37е-4932...

Автор: zalex 12.12.2008, 23:22
А как проверить - действительно ли 3.37е-4932 минимальное значение?
И почему на этапе копиляции не выдаётся ошибка?

Автор: Christoph 12.12.2008, 23:48
Возьми на еденицу меньше этого значения 3.36e-4932 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)