оказывается я все напутал
format при определении полей в таблицах не влияет на количество
знаков после запятой и тп. то есть по формату ничего не "отрезается"
для поля типа decimal там есть графа DECIMALS куда и вписывается число знаков после запятой
a+b=?
re:a+b=?
дык давайте же подведем окончательное резюме для faq
предлагаю такое правило: кто задавал вопрос первым, тот и делает резюме. в качестве закрепления материала и закрытия темы.
предлагаю такое правило: кто задавал вопрос первым, тот и делает резюме. в качестве закрепления материала и закрытия темы.
re:a+b=?
Резюме (для 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
а если добавить строку с = round(c, 1) перед d = c,
то результат:
с = 2,5
d =2,50
как я и просил.
Непонятно для чего это сделано, но это факт.
Для приведения числа к человеческому виду в прогрессе придусмотрены 2 оператора:
- round (он округляет в соответствии со всеми правилами окугления)
- truncate (он просто усекает число).
С целой частью дела обстоят похоже. Возможны любые присваивания, но вывод на экран возможен только в заданном формате, иначе возникает исключение.
С таблицами все обстоит подругому.
В таблицах (по крайней мере статических), при оприделении, жестко задается количество знаков после разделителя (не будем рассматривать явного изменения формата в программе). При аналогичном присваивании прогресс обрезает "хвост" числу в соответствии с заданной в таблице точностью.
Наверное также и с целой частью что в общем-то логично.
Вот и все. Я думаю тему можно закрывать.
Я прошу не пинать меня, если что не очень грамотно - я не очень знаком с терминалогией Progrss тк читал описалово на англ и испытывал некоторые трудности в высказывании мыслей на рус.
Большое спасибо van и все, все, все... .
-ТЕМА: представление десятичных чисел в 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
а если добавить строку с = round(c, 1) перед d = c,
то результат:
с = 2,5
d =2,50
как я и просил.
Непонятно для чего это сделано, но это факт.
Для приведения числа к человеческому виду в прогрессе придусмотрены 2 оператора:
- round (он округляет в соответствии со всеми правилами окугления)
- truncate (он просто усекает число).
С целой частью дела обстоят похоже. Возможны любые присваивания, но вывод на экран возможен только в заданном формате, иначе возникает исключение.
С таблицами все обстоит подругому.
В таблицах (по крайней мере статических), при оприделении, жестко задается количество знаков после разделителя (не будем рассматривать явного изменения формата в программе). При аналогичном присваивании прогресс обрезает "хвост" числу в соответствии с заданной в таблице точностью.
Наверное также и с целой частью что в общем-то логично.
Вот и все. Я думаю тему можно закрывать.
Я прошу не пинать меня, если что не очень грамотно - я не очень знаком с терминалогией Progrss тк читал описалово на англ и испытывал некоторые трудности в высказывании мыслей на рус.
Большое спасибо van и все, все, все... .