вопрос про паскаль

Компьютеры программирование программы паскаль

извините за ламерский вопрос но все же. Вот примерно такая программа. Почему в ней 1 не возводится в квадрат? программа возводит в квадрат 0.9 и завершается. если брать значения целые то все норм а с дробями у него проблемы что ли?
label m;
var a:real;
begin
a:=0;
m: write(sqr(a));
a:=a+0.1;
if a<=1 then goto m;
write('end');
end.
Ответы:
потому что где-то косяк
рискну предположить, что из-за ошибок округления, ты перескакиваешь 1.
попробуй в if вставить такое условие a <= 1 + epsilon
epsilon - это наименьшее положительное значение real, существенное в числовых операциях или сравнениях при значении экземпляра real, равном нулю.
его можно выбрать самому (например 0.01 для твоего случая подойдет) либо (это будет полезно в будущем все равно) найти системное значение, где-то в паскале оно должно быть пердопределенно, я просто не рублю в паскале по этому подсказать не могу.
а що саме не так?


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.