Trunc в паскале что это
Truncate (процедура)
Навигация
Язык:
Русский
English
Усекает файл в текущей позиции файла.
Объявление
Procedure Truncate(Var F);
Режим
Windows, Real, Protected
Замечания
F — файловая переменная любого типа, кроме текстового. Всё, что находится за текущей позицией файла, удаляется, и возвращается признак конца файла ( Eof (F) = True).
В режиме при возникновении ошибки, функция IOResult возвращает отличное от нуля значение.
Ограничения
Файл F должен быть открыт.
См. также
Пример
Язык:
Русский
English
var
F : file of Integer ;
I , J : Integer ;
begin
Assign(F , ‘TEST.INT’ ) ;
ReWrite (F) ;
for I := 1 to 6 do
Write (F , I) ;
WriteLn ( ‘Файл до усечения:’ ) ;
FileMode := 0 ; < режим только-чтение >
Reset (F) ;
while not EOF (F) do
begin
Read (F , I) ;
WriteLn (I) ;
end ;
FileMode := 2 ; < чтение и запись >
Reset (F) ;
for I := 1 to 3 do
Read (F , J) ; < Считываем 3 записи >
Truncate (F) ; < Усекаем здесь файл >
WriteLn ;
WriteLn ( ‘Файл после усечения:’ ) ;
FileMode := 0 ; < режим только-чтение >
Reset (F) ;
while not EOF (F) do
begin
Read (F , I) ;
WriteLn (I) ;
end ;
Close (F) ;
Erase (F) ;
end .
Trunc
Trunc returns the integer part of X , which is always smaller than (or equal to) X in absolute value.
Errors
See also
Return fractional part of floating point value.
Calculate integer part of floating point value.
Round floating point value to nearest integer number.
Example
Program Example70; begin Writeln (Trunc(123.456)); Writeln (Trunc(-123.456)); Writeln (Trunc(12.3456)); Writeln (Trunc(-12.3456)); end.
Функции trunc, round в Pascal.
Для того чтобы в Паскаль можно было оперировать не только целыми числами, но и дробными существуют вещественные типы данных. Один из таких типов называется Real. В этом уроке мы рассмотрим 2 функции, которые производятся над дробными числами. Это функция Trunc, которая округляет дробное число до целого, отбрасывая дробную часть и функция Round, которая округляет дробное число до ближайшего целого.
Program number10; uses crt; var N,K: integer; A,B: real; begin clrscr; N:=4; A:=3.6; B:=N; writeln('B=',B); N:=Trunc(A); writeln('Trunc(3.6)=',N); K:=Round(A); writeln('Round (3.6)=',K); readln end.
В строке №3 и №4 мы указали сразу 2 типа переменных. Для переменных N и K мы указали тип данных Integer, т.е. эти переменные могут принимать только целые значения в диапазоне от -32768 до 32767. Для переменных A и B мы указываем тип данных Real. Это вещественный тип данных, применяемый для переменных, которые могут принимать дробные значения в диапазоне от 2.9*10 -39 до 1.7*10 38 . Обратите внимание, что переменные разных типов указываются в разделе описания переменных через точку с запятой.
В строке №7 присваиваем переменной «N» значение «4».
В строке №8 присваиваем переменной «A» значение 3,6. Учтите, что при записи дробного числа в программе между целой и дробной частью ставится точка (а не запятая как при обычной записи).
Строка №9. Здесь переменной вещественного типа B мы присваиваем значение переменной целого типа N. Фактически мы присвоили переменной «B» значение 4. Таким образом, получается, что в переменную типа Real можно записать значение переменной Integer (т.е. целое число). А вот записать вещественное число в переменную Integer нельзя. Если нам необходимо это сделать, то мы должны определить, что делать с дробной частью. И здесь есть 2 варианта.
Строка №11. Функция trunk говорит нам о том, что при записи вещественного числа A в переменную целого типа K, дробная часть будет отбрасываться. Таким образом, получится, что переменной N будет присвоено значение не «3.6» , а просто «3».
Строка №13. Функция Round говорит нам о том, что при записи вещественного числа A в переменную целого типа K , число будет округляться до ближайшего целого. Таким образом, получится, что переменной K будет присвоено значение не «3.6» , а «4».
Обратите внимание, на формат вывода на экран вещественных чисел. Паскаль выводит дробные числа на экран в виде числа с плавающей точкой (экспоненциальная форма). Эта запись является неудобной, поэтому для приведения ее к нормальному виду прибегают к форматированию. Для форматирования нужно в строке №10 (вывод на экран) сделать такие изменения: writeln(‘B=’,B:2:1). После переменной B мы через двоеточие записываем 2 числа. Первое число (в нашем случае «2») показывает, сколько всего знаков должно выводиться на экран, второе число («1») показывает количество знаков после запятой.
После внесения этих изменений в программу мы получим следующий результат:
Дополнение к материалу.
Ниже приведена таблица значений для различных вещественных типов данных.
Типы | Диапазон допустимых значений | Число значащих цифр | Размер в байтах |
---|---|---|---|
Real | 2.9*10 -39 .. 1.7*10 38 | 11-12 | 6 |
Single | 1.5*10 -45 .. 3.4*10 38 | 7-8 | 4 |
Double | 5.0*10 -324 .. 1.7*10 308 | 15-16 | 8 |
Extended | 3.4*10 -4932 .. 1.1*10 4932 | 19-20 | 10 |
Comp | -2*10 63+1 .. 1.7*10 63-1 | 19-20 | 8 |
Функция Trunc
Функция Trunc в Паскале обрезает вещественное число до целого значения (то есть отсекает дробную часть числа). Синтаксис:
function Trunc(X: ValReal) : Int64;
Функция возвращает целую часть вещественного числа Х. Тип данных возвращаемого значения является целочисленным. Возвращаемое значение всегда меньше или равно исходному значению.
О типе ValReal я рассказывал здесь.
Возможно у вас возникнет вопрос — для чего нужно такое количество функция для работы с числами?
Например, функция Int также возвращает целую часть числа. Зачем тогда ещё нужна функция Trunc?
На это я обычно отвечаю известной фразой: если звёзды в небе зажигаются, значит, это кому-нибудь нужно.
А если серьёзно, то, на первый взгляд одинаковые функции на самом деле оказываются разными.
Например, упомянутая выше функция функция Int возвращает значение вещественного типа. А если вам требуется целое число, то вам придётся преобразовывать полученное вещественное значение в целое.
Функция Round округляет число и возвращает значение целого типа. Однако округление может быть как в большую, так и в меньшую сторону (см. правила округления чисел). А иногда для дальнейшей нужна именно целая часть вещественного числа, а не округлённое значение.
В общем, разных интересных ситуаций в программировании великое множество. Поэтому и разработано так много стандартных функций — почти на все случаи увлекательной жизни программиста.
Да, чуть не забыл. Вот пример использования:
program functrunc; var x : real; begin x := Pi; WriteLn(Trunc(x)); //Выведет число 3 ReadLn; end.