TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Арифметические операции с повышенной точностью 

             При использовании  сопроцессора  80x87 тип с повышенной точ-
        ностью Extended является основой всех операций с  плавающей  точ-
        кой.  В Турбо Паскале тип с повышенной точностью используется для
        представления всех нецелых числовых констант,  а также при вычис-
        лении всех выражений нецелого типа.  Например, в следующих опера-
        циях присваивания все правые части выражений  будут  вычисляться,
        как выражения с повышенной точностью, а затем их тип будет преоб-
        разован к типу соответствующей левой части:

              {$N+}
              var
                X, AA, B, C : real;
              begin
                X := (B + Sqrt(B*B - A*C))/A;
              end;

             Borland Pascal выполняет вычисления с точностью и диапазоном
        представления чисел,  соответствующими  типу  с  повышенной  точ-
        ностью,  без  дополнительных усилий программиста.  Дополнительная
        точность приводит к меньшим ошибкам округления,  а дополнительный
        диапазон означает,  что ситуации переполнения и потери значимости
        будут встречаться в программах реже.

             Вы можете обойтись и без дополнительных автоматических  воз-
        можностей вычислений с повышенной точностью Borland Pascal.  Нап-
        ример,  описать переменные,  использующиеся для промежуточных вы-
        числений, как переменные с повышенной точностью. В следующем при-
        мере вычисляется сумма произведений:

             var
               Sm : single;
               X,Y array[1..100] of single;
               I : integer;
               T : extended;            { для промежуточных результатов }
             begin
               T := 0.0;
               for I := 1 to 100 do T := T + X[I] * Y[I]
               Sum := T;
             end;

             Если бы переменная T была описана,  как переменная с одинар-
        ной точностью,  то при каждом цикле операции присваивания для пе-
        ременной  T были бы выполнены с ошибкой округления и ограничения-
        ми, соответствующими одинарной точности. Но, поскольку переменная
        T  является переменной с повышенной точностью,  то все ошибки ок-
        ругления (кроме операции, при которой значение переменной T прис-
        ваивается переменной Suм) имеют ограничения,  соответствующие по-
        вышенной точности.  Меньшие ошибки округления означают более точ-
        ный результат.

             Для значений  формальных  параметров и результата функции вы
        также можете задать повышенную точность. Это поможет избежать не-
        нужных преобразований типов чисел,  приводящих к потере точности.
        Например:

             function Area(Radius: extended): extended;
             begin
               Area := Pi * Radius * Radius;
             end;

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz