powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Round DataWindow expression function & PB 10.5.1 (6565)
8 сообщений из 8, страница 1 из 1
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386335
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фнукция просто не работает:
например round(10.145) = 10.14

Это только у меня или еще у кого так?

Я знатно извратился, написав примерно так округление до 2-ого знака прямо на вычисляемом поле в DW:

Truncate(var_a, 2) + 0.01*if( integer(mid(string(var_a), pos(string(var_a),'.',1)+3,1)) >= 5, 1, 0)

Можно конечно написать внешнюю функцию более красиво и звать так же в DW в вычисляемых колонках, но беда не приходит одна и например, если в формате указать точность до 2 знака: #,##0,00 то судя по всему неявно вызывается round и округление опять работает по принципу truncate, что вообще бардак, поскольку во ВСЕХ отчетах используется формат вывода и потому он неверный ... приехали полный пипец ... пока не все знают и пока тихо...

В особо ответственных местах вычисления связанные с округлением перенес в процедуры (ранее они возвращали полную точность с большим хвостиком и на клиенте хвостик рубили на сколько надо, теперь рублю сразу в процедуре)

какие мысли и предложения ???
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386409
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сменить build, написать bug-report в SyBase.
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386524
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чистой минорной версии 10.5.1 (6021) Maintenance без каких либо EBF результат тот же.

про bug-report в SyBase понятно. Одно непонятно как можно такую громкую ошибку попустить на протяжении стольких версий билдов.
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386573
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelBuilderОдно непонятно как можно такую громкую ошибку попустить на протяжении стольких версий билдов.
Это может только свидетельствовать о том, что SyBase не использует автоматическую систему тестирования ПО.
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386700
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelBuilderФнукция просто не работает:

round(10.145)

Нет такой ф-и в PB.
Есть ф-я round(10.145, 2)
#,##0,00
Здесь опечатка или именно такой формат был использован?


У меня не повторяется на указанном Вами билде. Все правильно работает: и округление через round и округление через формат вывода.

Пример простого DW сюда запостите, на котором повторяется.
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34386976
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал новое DW создать - external с единственной колонкой decimal(4)
вычисляемое поле с round() возвращает верный результат.
Сделал экспор-импорт проблемного DW, тупо добавил вычисляемое поле: round(10.145, 2) выдало верно: 10.15 (вчера без "экспорта -импорта" было 10,14), однако round(< колонка из базы со значением = 10,145 >, 2) = 10,14
может туплю, слона не вижу?
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34387433
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От до чего ленивый народ пошел.
Код: plaintext
1.
2.
3.
drop table t1;
create table t1 (n numeric);
insert into t1 values ( 10 . 145 );
commit;
DW приложено.
Все округляется OK.

Теперь Ваша очередь приводить пример.
...
Рейтинг: 0 / 0
Round DataWindow expression function & PB 10.5.1 (6565)
    #34388090
PavelBuilder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формат отображения #,##0.000

Может в этом загадка:
вот два вычисляемых поля:
1. sum( fees_a for all )
2. sum( if( nontraded_f = 'Y', 0, fees_a ) for all )

Первое правильно округляется, второе - нет

Пример DW бросить не могу (работаю через терминал, просто так файлы не перебросишь), потому вот так описываю. Суть кратко: есть флажок - nontrades_f - ликвиды/неликвиды и нужно получить комиссию по ликвидам/неликвидам и комиссию вообще.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Round DataWindow expression function & PB 10.5.1 (6565)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]