Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Общие вопросы разработки программ _ Отключение/подключение директив. Помогите, прошу..

Автор: brook 18.04.2012 16:56

Здравствуйте! Столкнулся с проблемой, которую не могу решить. Мне необходимо сделать так, чтобы Pascal ABC не переводил нецелые числа в числа с плавающей точкой (запятой), т.е. надо, чтобы он всегда работал с, например, такими числами: 0.000000000000078900000006, а не переводил их в вид 7.8900000006E-14. Подскажите, как принудить работать Pascal именно с такими "неудобными" для него числами.
Пожалуйста, откликнитесь! Очень срочно нужна помощь.

Автор: IUnknown 18.04.2012 17:14

В каком виде он будет работать - это его проблема, главное, чтоб он показывал значения в НЕэкспоненциальном виде. Для этого есть формат вывода:

var x: real;
begin
x := 0.000000000000078900000006;
write(x:30 :28); // Всего 30 знаков, после запятой 28
end.


http://pascalabc.net/WDE/ по крайней мере выводит "0.0000000000000789000000060000", не знаю как автономная версия, я ее не держу.

Автор: brook 19.04.2012 1:58

Спасибо большое, но в моем случае надо сделать так, чтобы результат был без E, а не ответ

Автор: IUnknown 19.04.2012 3:34

Результат (я о представлении вещественных чисел в PascalABC, они там только Real, других типов нет) всегда одинаковый, это обычное 64-битное число (15-16 значащих цифр и значения по модулю не превосходящие 1.7*10308). Единственное, на что ты можешь хоть как-то влиять - это на способ его отображения. Не хочешь - не надо, ищи другой компилятор (вернее, интерпретатор)

Кстати, вышеприведенный код на PascalABC (старом, не .NET-овом) ведет себя не так, он просто выводит 0. Оно и понятно, максимум 16 значащих цифр, точнее чем 0.0000000000000789 вывести не удастся.