Работая в "Паскале" с переменными разных типов, довольно часто приходится иметь дело с тем, что при компиляции программы возникают ошибки, указывающие на неверное преобразование значений. Например, нельзя присвоить переменной типа integer значение 5.9, так как это приведёт к ошибке компиляции. В этом случае приходится говорить об использовании функций Round и Trunc в "Паскале", с помощью которых можно преобразовать типы аргументов и далее выполнять с ними определённые задачи.
Общие сведения о преобразовании типов
Преобразование типов (приведение значений) - это процесс преобразования величин одного типа данных в другой. Различают явное и неявное приведение типов. Первое задается непосредственно разработчиком с помощью либо конструкций языка, либо посредством использования функций, а второе самостоятельно выполняется интерпретатором или компилятором кода по правилам, оглашенным в стандарте того или иного языка программирования.
Преобразование типов в Pascal
В языке программирования "Паскаль" можно использовать как явное, так и неявное преобразование типов.
При явном приведении типов в "Паскале" используются вызовы к специальным функциям преобразования, аргументы которых принадлежат одному типу, а значение - совсем другому типу данных. Таковыми являются функция Trunc в "Паскале" и функция Round, которые будут рассмотрены более детально ниже.
Неявное приведение типов в этом языке возможно лишь в тех случаях, когда в выражениях, которые состоят из целочисленных и вещественных переменных, первые автоматически преобразуются к второму типу.
Далее речь пойдет, о том, как можно осуществить приведение типов для числовых данных.
Trunc
Встроенная математическая функция. Trunc в "Паскале" отбрасывает всю дробную часть аргумента, приводя его к целочисельному виду. Например, вызвав функцию Trunc с аргументом (1.73) в итоге можно получить результат 1.
Синтаксис функции: Trunc (x:real): Longint.
Round
Встроенная математическая функция. Функция Round округляет аргумент по правилам математики до ближайшего целого числа. Например, вызвав Round(1.73) в итоге получится 2, а Round от аргумента (1.11) даст 1.
Синтаксисфункции: Round (x:real): Longint.
Стоит заметить, что для результата выполнения функций Round и Trunc в "Паскале" есть ограничения. Выполнение завершится ошибкой, если этот результат выходит за рамки значений типа Longint.
Очевидно, что синтаксис обеих встроенных функций довольно прост и позволяет использовать Round и Trunc в "Паскале" для явного преобразования типов без лишних заморочек и не вызывает ошибок компиляции о нарушении типов.