Как перевести real в integer в pascal

Как перевести real в integer в pascal

Например 3.23462672672 преобразовать в 3
Int, trunc, round превращают число в 3.000000000

var a:real;
b:integer;
begin
a:=1.1356616;
b:=int(a);
write(b);
End.

Вылезает ошибка "Несоответствие типа".

Здесь легко и интересно общаться. Присоединяйся!

b := trunc(a);
int — возвращает число с плавающей точкой, которое не может быть без явного приведения типа присвоено целой переменной.

выводи его как:
write(b:4:0);

4 символа всего, нуль символов после запятой)

Кода целое значение присваивается вещественной переменной, оно автоматически преобразуется в вещественный тип и никакие функции для этого не требуются. Такое преобразование типов называется неявным. Так, если переменную объявить как real, а затем присвоить ей целое число 5, то последнее автоматически преобразуется в 5.0.

Обратного неявного преобразования нет: будет ошибкой пытаться присваивать переменной целого типа вещественный результат.

Перед присваиванием целой переменной вещественного значения это значение следует преобразовать к целому типу отбрасыванием дробной части или округлением. Для этих целей служат функции trunc и round соответственно.

trunc(вещественное_выражение) – преобразует вещественное в целый тип, отбрасывая дробную часть.
trunc(3.1), trunc(3.8). Результат: 3, 3
trunc(-3.1), trunc(-3.8). Результат: -3, -3

round(вещественное_выражение) – преобразует вещественное в целый тип, округляя до ближайшего целого.
round(3.1), round(3.8). Результат: 3, 4
round(-3.1), round(-3.8). Результат: -3, -4

Здесь возможны недоразумения. Пусть вещественная переменная x имеет значение 3.499999. Если это значение напечатать с использованием оператора write(x:8:5), то получится 3.50000, в то время как write(round(x)) даст 3, а не 4. Это затруднение можно обойти при помощи небольшой поправки, например write(round(x + 0.000001)) (в предположении, что значение переменной x заведомо положительное).

Применять функции trunc и round к параметрам целого типа нельзя. Например, будут ошибкой такие выражения, как trunc(3) или round(3).

Я пишу задачу на pascal.

Читайте также:  Описать 5 антивирусных программ таблица

Все в порядке, только мой результат не прав.

Я суммирую некоторые цифры

Пример: 2.3 + 3. 4+ 3.3 = 9

Но вывод показывает: 9.000000 + EEE или что-то в этом роде.

So- как преобразовать, чтобы быть только 9, а не этой переменной REAL.

4 ответа

Для вывода только целочисленной части:

Для того, чтобы показывать на экране хороший результат, вы можете использовать что-то вроде этого:

Результатом на экране будет следующее:

Что это значит, кто-то спросит? Ну, первое число 0 означает, насколько широка подана. если вы говорите это 0, то Паскаль пишет это в самой левой части экрана. Если вы сказали writeln(result:5:2) результат будет:

Другими словами, я бы напечатал форму с правой стороны и оставил 5 символов для этого.

Второе число 2, в этом примере означает, что вы хотите, чтобы результат был напечатан с двумя знаками после запятой. Вы можете разместить его только в том случае, если вы хотите напечатать на экране значение, которое является реальным, одиночным, двойным, расширенным и т.д. Вы можете округлять до любого числа десятичных знаков, и если вы выполняете writeln(result:0:0) вы получите Ouput:

Если вы печатаете целое число и хотите иметь некоторую длину поля, давайте сидим 5, вы бы сделали: writeln(int:5) . Если вы добавили :2 до конца, вы получите ошибку времени компиляции.

Все это также работает примерно так: writeln(5/3.5+sqrt(3):0:3) ,

Вы должны знать, что это не круглая переменная, а просто форматирует выход. Это также является законным:

Что я здесь сделал, я спросил пользователя, если на сколько десятичных знаков и с какой длиной поля он хочет записать введенный номер a. Это может быть полезно, поэтому я указываю это. Спасибо за чтение. Надеюсь, я помог

Читайте также:  Чем заменить адобе флеш плеер на компьютере

Рассмотрим это довольно простое уравнение:

Что вы ожидаете? 6 , правильно? Попробуйте этот код

К сожалению, это число с плавающей запятой, поэтому оно будет представлять собой число, представленное научным способом:

или 6.0000000000 x 10 0 или 6 x 10 o . Что бы то ни было, вам всего лишь 6, кому нужно это странное бессмысленное длинное число? Поэтому идея состоит в том, чтобы отключить десятичную часть и вывести на консоль только целую часть, которая может быть выполнена с помощью этой строки кода:

Хорошо, теперь он выводит красивое число, как ожидалось

Похоже, проблема решена, но вы говорите, что:

Пример: 2.3 + 3. 4+ 3.3 = 9

Ох, так что ровно, красивое целое просто случайно появилось? Здесь возникает проблема, как вы ожидаете, что это уравнение выйдет?

Это должно быть 6.1 , верно? Попробуем попробовать обработанную строку кода:

Неожиданно, правда? Итак, как насчет округления до десятичных знаков, например 1 ?

Тогда 3.5 + 2.5 = 6.0 и 3.6 + 2.5 = 6.1 . Но 6.0 может выглядеть довольно долго, так как сделать его выходом 6 для 6.0 и 6.1 для 6.1?

Фактически, вы не можете сделать автоматическое обнаружение программы, если реальная переменная содержит целочисленное значение, потому что способ сохранения реального var полностью отличается от целочисленного var (насколько он отличается от них, обратитесь в Google, но вы можете это сделать вручную, выполняя функцию для выполнения задания).

Поэтому мое решение состоит в том, чтобы легко сделать вывод округленным до нескольких знаков после запятой и что он.

Вы можете преобразовать в string , получить часть int , e конвертировать в int number!

Ссылка на основную публикацию
Как оживить маркер на спиртовой основе
Обычный строительный (разметочный) маркер высох, как и чем его заправить. На упаковке маркеров (фломастеров) в начале прочитайте информацию о том...
Как использовать шкалу в mortal kombat x
Игровая механика Mortal Kombat X более глубока по сравнению с прошлыми частями родом из 90-х. Комбо, суперудары, атаки X-Ray. Сходу...
Как на роутере мегафон прочитать смс
В этом обзоре мы рассмотрим роутер Мегафон – приведем характеристики выбранной модели, сделаем небольшой обзор доступных моделей и расскажем о...
Как оглушить врагов в метро 2033
Как знают поклонники шутеров серии Metro от украинской студии 4A Games, Metro 2033 и Metro: Last Light, решения игрока в...
Adblock detector