Другие языки программирования и технологии

PASCAL - Мне необходимо округлить число в большую сторону

Объясню на примере
мы вводим число n, после делим конкретно на одно из этих чисел на выбор 60, 50, 40, 110, 80, 3000
т. е. результат: =n/3000, если мы ввели n=60 то результат равен 0,02. а мне нужно любой результат округлять в большую сторону, в целое число. Как это сделать?
> то результат равен 0,02. а мне нужно любой результат округлять в большую сторону
Т. е. округляя в большую сторону 0.02 получаем 1?

Int(результат) + 1

Trunc(результат) + 1

Int возвращает Real
Trunc - Longint
Миша Алексен
Миша Алексен
82 068
Лучший ответ
Сергей Кузнецов trunc(1)+1=2. А просили округлить.
Александр Таранов щас попробую
Господа надмозги, а как насчет функции Math.Ceil() ? В классическом паскале неужто нет ничего подобного?

На крайняк - моя кривая реализация:

function DivCeil(Divided, Divisor:extended):longint;
begin
if Frac(Divided/Divisor)>(1.0/Divisor) then
DivCeil:=Trunc(Divided/Divisor)+1
else
DivCeil:=Trunc(Divided/Divisor);
end;
Сырым Батыршаев В turbo ceil нет. В делфи, фрипаскале - есть.
Если целое - оставь как есть, если дробь - увеличь на 1 и отбрось дробную часть.
Александр Таранов я суть понимаю) а как это сделать?
дробь 0,02 округлить до целого? эм.. . не курите больше эту траву.
ПР
Павел Рубель
34 078
Александр Таранов в точку)) игра травиан такая трава))) пытаюсь сделать програмку для неё))
Зачем так всё усложнять, в Turbo Pascal (Free PASCAL, Delphy ) есть функция Round() ;
http://tpdn.ru/guide/pf/round/
Округляет значение вещественного типа до значения целочисленного типа.

Объявление:

Function Round(X : Real) : Longint;

Режим: Windows, Protected, Real
{==============================================================}
Delphi :
begin
ShowMessage('Round(12.75) = '+IntToStr(Round(12.75)));
ShowMessage('Trunc(12.75) = '+IntToStr(Trunc(12.75)));
ShowMessage(' Int(12.75) = '+FloatToStr(Int(12.75)));
ShowMessage(' Frac(12.75) = '+FloatToStr(Frac(12.75)));
end;
Round(12.75) = 13
Trunc(12.75) = 12
Int(12.75) = 12
Frac(12.75) = 0.75

Замечания:
X - выражение с реальным типом. Round возвращает значение типа Longint, которое является значением X, округленного к самому близкому целому числу. Если X - ровно посередине между двумя целыми числами, то результатом будет число с самой большой абсолютной величиной. Если округленное значение X ненаходится внутри допустимого диапазона Longint, то происходит ошибка во время выполнения программы.

Пример:

Begin
WriteLn(1.4, ' округленно = ', Round(1.4));
WriteLn(1.5, ' округленно = ', Round(1.5));
WriteLn(-1.4, ' округленно = ', Round(-1.4));
WriteLn(-1.5, ' округленно = ', Round(-1.5));
End.
Alex Gl
Alex Gl
14 439
Пользуйся функцией Trunc(R), где R - вещественное число. Она округляет в меньшую сторону) Потом просто прибавляй 1.
То есть: A:=Trunc(B)+1
Назиф Хабибуллин не работает при целых числах!
Олег Иванов а если дробной части нет?
//ceil - округляет в большую сторону в целое число
var a:integer;
b:real;

a:= ceil(b);
write(a);
ZR
Zorg Ru
102