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

Как в паскале убрать у числа определенно количество знаков после запятой?

Например дается число 1.72921321, нужно преобразовать его в 1.729
program ideone;
var
a : Real;
begin
a := 112.72921321;
writeln(a:0:3);
end.

Выведет 112.729 но вычислять будет с большей точностью
Максим Катаев
Максим Катаев
57 839
Лучший ответ
Андрей Тарбеев По сути вопроса надо именно убрать знаки, а не вывести без этих знаков. Ваш ответ частично не верен.
умножить на 1000, округлить до целого, разделить на 1000
Частенько возникает вопрос, как же число в таком формате 5.1100000000E+01 преобразовать более в читабельный вид. А именно, указать количество знаков после запятой. На самом деле в pascalэто делается довольно легко. Не слушайте никого, кто будет предлагать методы через divи mod.

В паскале существует довольно таки простое решение в работе с вещественными числами:
<переменная>:<число знаков целой части>:<число знаков после запятой>
В коде паскаля это будет выглядеть так:
var number :Real;
begin
writeln('Введите четное число ');
Readln(number);
number:=number/3;
writeln('2 знакапосле запятой в pascal - number = ', number:0:2);
writeln('3 знака после запятой в pascal - number = ', number:0:3);
writeln('4 знака после запятой в pascal - number = ', number:0:4);
writeln('5 знако впосле запятой в pascal - number = ', number:0:5);
end.

Результатом данной программы будет:
Введите четное число
10
number = 3.33333333333333
2 знака после запятой в pascal - number = 3.33
3 знака после запятой в pascal - number = 3.333
4 знака после запятой в pascal - number = 3.3333
5 знаков после запятой в pascal - number = 3.33333

Метод работает, если производить математические операции прямо во writeln. Он возьмет полученное значение и будет работать с ним:
var number :Real;
begin
writeln('Введите четное число ');
Readln(number);
number:=number/3;
writeln('number = ', number);
writeln('2 знака после запятой в pascal - number = ', number+number:0:2);
writeln('3 знака после запятой в pascal - number = ', number+number:0:3);
writeln('4 знака после запятой в pascal - number = ', number+number:0:4);
writeln('5 знаков после запятой в pascal - number = ', number+number:0:5);
end.

Результатом алгоритма будет следующим:
Введите четное число
20
number = 6.66666666666667
2 знака после запятой в pascal - number = 13.33
3 знака после запятой в pascal - number = 13.333
4 знака после запятой в pascal - number = 13.3333
5 знаков после запятой в pascal - number = 13.33333

Преобразуем наш код, чтобы пользователь сам решал, сколько ему необходимо знаков после запятой в вещественных числах. Для этого введем переменную n:
var number:Real;
n:integer;
begin
writeln('Введите четное число ');
Readln(number);
writeln('Введите количество знаков после запятой ');
Readln(n);

number:=number/3;
writeln('number = ', number);
writeln('n = ', n);

writeln(n,' знака (ов) послез апятой в pascal - number = ', number+number:0:n);
end.

Результат:
Введите четное число
16
Введите количество знаков после запятой
4
number = 5.33333333333333
n = 4
4 знака (ов) после запятой в pascal - number = 10.6667

Похожие вопросы