a+b=?

Обсуждение вопросов по разработке программ в среде продуктов копорации "Progress Software"
SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

a+b=?

Сообщение SKR » 10 июл 2002, 07:45


van
Модератор
Сообщения: 407
Зарегистрирован: 12 июл 2001, 03:00

re:a+b=?

Сообщение van » 10 июл 2002, 09:57


Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

Re: a+b=?

Сообщение dmi » 10 июл 2002, 10:46


SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

re:a+b=?

Сообщение SKR » 10 июл 2002, 11:39


SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

re:a+b=?

Сообщение SKR » 10 июл 2002, 14:59


greedy
Старожил
Сообщения: 35
Зарегистрирован: 04 июл 2002, 12:59

re:a+b=?

Сообщение greedy » 15 июл 2002, 07:06


Гость

re:a+b=?

Сообщение Гость » 15 июл 2002, 20:14


SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

re:a+b=?

Сообщение SKR » 16 июл 2002, 07:53


Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

re:a+b=?

Сообщение dmi » 19 июл 2002, 23:43


Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

re:a+b=?

Сообщение dmi » 19 июл 2002, 23:57


SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

re:a+b=?

Сообщение SKR » 22 июл 2002, 07:31


greedy
Старожил
Сообщения: 35
Зарегистрирован: 04 июл 2002, 12:59

re:a+b=?

Сообщение greedy » 07 авг 2002, 12:16

оказывается я все напутал :roll:
format при определении полей в таблицах не влияет на количество
знаков после запятой и тп. то есть по формату ничего не "отрезается"
для поля типа decimal там есть графа DECIMALS куда и вписывается число знаков после запятой :lol:

van
Модератор
Сообщения: 407
Зарегистрирован: 12 июл 2001, 03:00

re:a+b=?

Сообщение van » 07 авг 2002, 21:39

дык давайте же подведем окончательное резюме для faq ;)
предлагаю такое правило: кто задавал вопрос первым, тот и делает резюме. в качестве закрепления материала и закрытия темы.

SKR
Старожил
Сообщения: 23
Зарегистрирован: 08 июл 2002, 16:50
Откуда: Москва

re:a+b=?

Сообщение SKR » 09 авг 2002, 09:42

Резюме (для FAQ):
-ТЕМА: представление десятичных чисел в Progress.

-ТЕЛО:

В прогрессе, формат десятичного числа в памяти не зависит от описанного форамта.

Формат необходим для вывоада числа на экран.

В памяти число хранится циликом, в пределах разумного (этот предел я не измерял, вероятно он эквивалентен с-шному float).

вот пример, который иллюстрирует работу с дробной частью:
необходимо посчитать а + b результат присвоить с
далее с присваиваем d (с более высокой точностью) и выводим все на экран.

def var a as deci initial 1.44 .
def var b as deci initial 1.05 .
def var c as deci format "9.9".
def var d as deci format "9.99" .

c = a + b.
d = c.
display c.
display d.

результат:
c =2,5
d = 2,49 :o

а если добавить строку с = round(c, 1) перед d = c,
то результат:
с = 2,5
d =2,50
как я и просил.

Непонятно для чего это сделано, но это факт.

Для приведения числа к человеческому виду в прогрессе придусмотрены 2 оператора:
- round (он округляет в соответствии со всеми правилами окугления)
- truncate (он просто усекает число).

С целой частью дела обстоят похоже. Возможны любые присваивания, но вывод на экран возможен только в заданном формате, иначе возникает исключение.

С таблицами все обстоит подругому.
В таблицах (по крайней мере статических), при оприделении, жестко задается количество знаков после разделителя (не будем рассматривать явного изменения формата в программе). При аналогичном присваивании прогресс обрезает "хвост" числу в соответствии с заданной в таблице точностью.
Наверное также и с целой частью что в общем-то логично.

Вот и все. Я думаю тему можно закрывать.
Я прошу не пинать меня, если что не очень грамотно - я не очень знаком с терминалогией Progrss тк читал описалово на англ и испытывал некоторые трудности в высказывании мыслей на рус.
Большое спасибо van и все, все, все... :D .