Согласие на обработку персональных данных.

17.06.2018
Новая статья Преобразование десятичного числа в шестнадцатеричное.

12.06.2018
Новые видео и статья Что такое HTML.

08.06.2018
Новые видео и статья Процедура BlockWrite.

03.06.2018
Новый выпуск журнала Автоматизация и программирование.

26.05.2018
Новые видео и статья Как изменить дизайн сайта на Wordpress.



Раздел: Стандартные функции Паскаля

Функция Round

Функция Round в Паскале округляет значение с плавающей точкой до ближайшего целого числа. Синтаксис:

function Round(X: ValReal) : Int64;

Функция Round округляет Х до ближайшего целого числа и возвращает значение, которое может быть как меньше, так и больше исходного значения вещественного числа Х.

О типе ValReal я рассказывал здесь.


Правило округления числа

Округление вещественного числа Х выполняется по следующему правилу:

  1. Если дробная часть числа Х меньше 0.5, то число Х округляется в меньшую сторону.
  2. Если дробная часть числа Х больше 0.5, то число Х округляется в большую сторону.
  3. Если дробная часть числа Х равна 0.5, то используется особый принцип округления числа, так называемое “Банковское округление”. То есть когда число округляется всегда в сторону чётного числа.

Примеры округления чисел

Исходя из вышесказанного функция Round будет возвращать следующие результаты при округлении чисел:

Round(55.3) = 55
Round(55.6) = 56
Round(55.5) = 56
Round(56.5) = 56

Ну и напоследок пример программы:

program funcround;

{$mode objfpc}{$H+}

var x     : Real;
    y, z  : integer;

begin
  y := 100;
  x := 55.7;

  //z := y + x;       //!!! Неправильно
  z := y + Round(x);  //Правильно, z = 156
  WriteLn(z);

  WriteLn('Round(55.3) = ', Round(55.3));
  WriteLn('Round(55.6) = ', Round(55.6));
  WriteLn('Round(55.5) = ', Round(55.5));
  WriteLn('Round(56.5) = ', Round(56.5));

  ReadLn;
end.

Обратите внимание в примере на закомментированную строку. Так делать нельзя, потому что в Паскале не допускается присваивать целочисленным переменным вещественные значения.

Поэтому, если необходимо сложить две переменных - целую и вещественную, а результат поместить в целую, то надо использовать какую-либо из подпрограмм преобразования типов. Например, функцию Round.

ПРИМЕЧАНИЕ

Также обратите внимание, что функция Round возвращает число типа Int64. Этот тип НЕ является порядковым типом данных. Это значит, что по идее функцию Round нельзя использовать в конструкциях, требующих применения порядковых типов. Например, с оператором case.

То есть по идее компилятор должен выдать ошибку, если в вашей программе будет что-то типа того:
case Round(x) of
56  : WriteLn('x = 56');
end; 
Однако я проверил. Программа компилируется и работает нормально. И всё же я не советую использовать в ваших программах конструкции, которые противоречат документации. Если необходимо использовать результат функции Round в подобных ситуациях, то лучше сначала присвоить результат какой-нибудь переменной порядкового типа, а потом уже эту переменную использовать с таким операторами, как case.

Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика