IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Отключение/подключение директив. Помогите, прошу.., Как принудить Pascal работать с нецелыми числами?
brook
сообщение 18.04.2012 12:56
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


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

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


Online-компилятор PascalABC по крайней мере выводит "0.0000000000000789000000060000", не знаю как автономная версия, я ее не держу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
brook
сообщение 18.04.2012 21:58
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Спасибо большое, но в моем случае надо сделать так, чтобы результат был без E, а не ответ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 18.04.2012 23:34
Сообщение #4


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


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

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

Сообщение отредактировано: IUnknown - 18.04.2012 23:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.03.2024 19:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"