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

Как округлить ответ до сотых?

PROGRAM S_triangle;
VAR
a,b,c,p,r: REAL;
BEGIN
Writeln('Введите стороны треугольника');
Readln(a,b,c);
p:= (a + b + c) / 2;
r:= SQRT (p * (p - a) * (p - b) * (p - c));
WriteLn('Round(r) = ', Round(r));
Writeln('Площадь треугольника: = ',r);
END.
SE
Sergey Egorov
142
100
Рустам Мингазов
Рустам Мингазов
13 941
Лучший ответ
Sergey Egorov Гений...
Если значение переменной не надо округлять, а только вывести то врительн(r:2)
function Round(x: real; digits: integer): real;
Возвращает x, округленное до ближайшего вещественного с digits знаками после десятичной точки

Writeln('Площадь треугольника: = ',r:0:1);
Просто выведет с 6.0 но если надо 6, то Round предпочтительней
АБ
Артём Белый
78 235
Writeln('Площадь треугольника: = ',r:5:2);
Александр Шиш
Александр Шиш
95 955
Sergey Egorov Спасибо)
RoundТо(r,2)
Самые распространенные – это функции round(), ceil(), floor() и trunc(). Если первая выполняет математически правильное округление, то есть к ближайшему целому, а 0,5 к более дальнему от 0, то ceil() округляет в сторону большего, а floor() - в сторону меньшего. Последняя функция trunc() скорее не округление, а простое отбрасывание дробной части. Продемонстрируем на примере:
void main( void )
{
double y;
y = floor( 2.8 );
printf( " floor %f\n", y );
y = ceil ( 2.1 );
printf( " ceil %f\n", y );
y = round ( 2.6 );
printf( " round %f\n", y );
y = trunc ( 2.9 );
printf( " trunc %f\n", y );
}
void main( void )
{
double y;
y = floor( 2.8 );
printf( " floor %f\n", y );
y = ceil ( 2.1 );
printf( " ceil %f\n", y );
y = round ( 2.6 );
printf( " round %f\n", y );
y = trunc ( 2.9 );
printf( " trunc %f\n", y );
}
Программа выведет значения 2, 3, 3 и 2.
Для случая, когда надо округлить число до определенного знака, в библиотеке <math.h> отдельной функции нет, потому обычно используют умножение числа и последующее после округления деление, то есть, например, для округления до сотых:
y=floor( 2.463*100 )/100;
1
y=floor( 2.463*100 )/100;
Получим значение 2.46.