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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8076
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

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

Сообщение Игорь Столяров »

Привет всем !

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

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

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

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

Или я не прав ?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3301
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 51 раз
Контактная информация:

Сообщение Дед Пахом »

По-моему, оно себя ведёт разумно: лучше потерять запятую, отделяющую тысячи, чем вообще всё число.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Пока есть возможности не отображая некоторые незначащие символы отобразить "правильно" число - Кларион будет убирать запятые.
Только после того как Вы введете число 5490000000000.00, при форматировании будет выведено ############.##
Вот так то!
С одной стороны верно. С другой нет...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8076
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

Сообщение Игорь Столяров »

Гм. Что значит "не значащие символы" .... ? Какие и для кого ?
Понятно, что бред - но где гарантия, что "спасая число" FORMAT
завтра не уберет десятичную точку ... ;)

В общем примерно картина ясна. Спасибо за комментарии.
Стабильности нет, блин ! :)
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Точку не уберет! В таком виде число "испортится"
А для решения проблемы разве нельзя сделать формат "побольше"?
Или сделай для таких "важных" чисел свою процедуру FORMAT
Сделать разделение числа запятыми - легко!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8076
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 98 раз

Сообщение Игорь Столяров »

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