← Все вопросы

real в паскале выводит кучу цифр после запятой, как округлить до 2 знаков?

Задан 8 месяцев назад1.2к просмотров2 ответа
5

Считаю среднее арифметическое, ответ real. А паскаль выводит что-то типа 4.66666666666667 или вообще 4.6E+00, мне же надо нормально, 4.67. Как заставить его выводить две цифры после точки?

var
  a, b, c: integer;
  sr: real;
begin
  a := 4; b := 5; c := 5;
  sr := (a + b + c) / 3;
  writeln(sr);
end.

2 ответа

11
✓ Принятый ответ — помог автору

Для real используй форматный вывод — после переменной через двоеточие указываешь ширину и сколько знаков после точки: sr:0:2. Двойка как раз = 2 знака после запятой:

var
  a, b, c: integer;
  sr: real;
begin
  a := 4; b := 5; c := 5;
  sr := (a + b + c) / 3;
  writeln(sr:0:2);
end.

Теперь выведет ровно 4.67.

Разбор sr:0:2:

  • первое число (0) — общая ширина поля. 0 значит 'сколько надо, без лишних пробелов'.
  • второе число (2) — сколько цифр после точки. Хочешь 3 знака — пиши :0:3.

То страшное 4.6E+00 — это научная запись, она вылазит как раз без форматирования. С :0:2 её не будет.

Кстати, у тебя верно: деление / всегда даёт real, даже если делишь целые. Поэтому sr и должна быть real, integer тут не подойдёт.

3

да, :0:2 спасает жизнь, особенно когда выводишь деньги или среднее. на проверочных всегда прошу нормальный вид числа, иначе учитель занижает за 'некрасивый вывод')

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект