Страница 1 из 1

Косяк или показалось ?

Добавлено: 10 Октябрь 2007, 11:42
Игорь Столяров
Привет всем !

Столкнулся с интересной комбинацией при форматировании сумм.
Предположим, есть некоторая сумма в формате DECIMAL.

Например: Credit = 5490000000.00 ! (пять миллиардов ...)
Теперь форматируем ее с разной разрядностью шаблона:

Format(Credit,@n16.2b) = "5,490,000,000.00" ! Правильно
Format(Credit,@n15.2b) = "5490,000,000.00" ! Не правильно

Второй вариант является неправильным, я столкнулся с проблемой
при распарсивании этой суммы в формат MANY MS SQL. Уже если
число не помещается в разрядную сетку - заблокировали бы его
в "**** ..." как обычно. К чему это изменение структуры формата ... ?

Или я не прав ?

Добавлено: 10 Октябрь 2007, 12:13
Дед Пахом
По-моему, оно себя ведёт разумно: лучше потерять запятую, отделяющую тысячи, чем вообще всё число.

Добавлено: 10 Октябрь 2007, 12:14
Admin
Пока есть возможности не отображая некоторые незначащие символы отобразить "правильно" число - Кларион будет убирать запятые.
Только после того как Вы введете число 5490000000000.00, при форматировании будет выведено ############.##
Вот так то!
С одной стороны верно. С другой нет...

Добавлено: 10 Октябрь 2007, 22:05
Игорь Столяров
Гм. Что значит "не значащие символы" .... ? Какие и для кого ?
Понятно, что бред - но где гарантия, что "спасая число" FORMAT
завтра не уберет десятичную точку ... ;)

В общем примерно картина ясна. Спасибо за комментарии.
Стабильности нет, блин ! :)

Добавлено: 11 Октябрь 2007, 0:07
Admin
Точку не уберет! В таком виде число "испортится"
А для решения проблемы разве нельзя сделать формат "побольше"?
Или сделай для таких "важных" чисел свою процедуру FORMAT
Сделать разделение числа запятыми - легко!

Добавлено: 11 Октябрь 2007, 8:29
Игорь Столяров
Когда стала понятна причина "проблемы", то ее легко устранили простым увеличением разрядности FORMAT.
Здесь скорее был вопрос о странности поведения функции FORMAT.
Я например, в документации не нашел, что выходной формат числа может быть изменен при предельных значениях разрядной сетки форматирования. Да и пока это все "крутится" внутри программы - проблемы нет (Format & Deformat). Косяк возник при распарсивании такой строки с числом в MS SQL - он то не в курсе таких особенностей форматирования ... ;)