Здравствуйте! Столкнулся с проблемой, которую не могу решить. Мне необходимо сделать так, чтобы 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.
Online-компилятор PascalABC по крайней мере выводит "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 вывести не удастся.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.