powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / inline extern из библиотеки, как правильно декларировать-имплементировать?
25 сообщений из 276, страница 4 из 12
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282785
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneДвух знаков недостаточно :) Вон на всех биржах цены с 4 знаками.

а вообще-то суммы (деньги) и цены - это разные типы.

money_t - это всегда два знака
price_t - это как минимум 6 знаков

с количествами отдельная печаль (там знаков может быть до 9)

у бирж все проще - у них нельзя купить половину акции. а вот в области производства и торговли ресурсами - запросто можно купить 1.2321234112 тонны - это нужно, чтоб вписаться до копейки в сумму аванса для счет-фактур.

потому вопрос - какой там фундаментальный тип использовать для этого всего - он не должен озадачивать прикладного говнокодера.

ему нужно конкретно сказать - вот тут money_t, тут price_t, а тут qty_t, и не вздумай попутать или заюзать double - расстрел на месте.

заставить его думать, что там ему тиснуть в параметры std шаблона - это вообще космической наивности и глупости предположения.
нет там таких интеллектуалов среди прикладников, чтоб они изначально разбирались в предметах и требованиях точности расчетов.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282809
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaк примеру мировой ВВП в прошлом году это всего 73 триллиона. 92233 позволит этот ВВП суммировать 1263 раз. этого более чем достаточно для всех практических бухгалтерских и финансовых задач - ну не может быть в задаче больше денег, чем человечество способно в принципе произвести. так это еще с точностью до копейки, а если без копейки - это 126300 раз - больше, чем в обозримой перспективе человечество вообще сможет денег запродуцировать Это смотря в какой валюте Нет универсального подходящего для всех решения.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282828
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично.
Другое дело что их нельзя сравнивать, и при сортировке проблемы.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282832
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaтемплейты - это возведенная в абсолют автоматизированная копипаста, так убедительнее звучит?
не важно кто копипасту ипсолняет - кодер Вася или компилятор, копипастой от этого она не перестает быть.
Не больший копипаст чем инлайн
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282899
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskynojavaтемплейты - это возведенная в абсолют автоматизированная копипаста, так убедительнее звучит?
не важно кто копипасту ипсолняет - кодер Вася или компилятор, копипастой от этого она не перестает быть.
Не больший копипаст чем инлайн

ты опять решил сесть в лужу? говорили же, для чего нужен инлайнинг - для вкомпиляции некроссплатформенных intrinsic и built-in, без создания абсолютно ненужных stack frame.
и даже если в чистом виде - inline он виден лишь желающим почитать ассемблерный код.

а эти об эти ваши темплейты нужно ломать глаза каждый день, опять-же, делая парсинг в голове на тему что это за закорючка - сравнение или все-таки чего-то там инстациирование.


при этом даже гуру C++ прямо говорят - идея, что давайте все раскопипастим, а компилятор все это чудесно заоптимизирвет - оказалась пшиком, никакого прироста производительности никто так и не смог достичь, зато исполнимый код бухнет, вымывая L2/L3 кеши просто на ура.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39282917
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlonenojavaк примеру мировой ВВП в прошлом году это всего 73 триллиона. 92233 позволит этот ВВП суммировать 1263 раз. этого более чем достаточно для всех практических бухгалтерских и финансовых задач - ну не может быть в задаче больше денег, чем человечество способно в принципе произвести. так это еще с точностью до копейки, а если без копейки - это 126300 раз - больше, чем в обозримой перспективе человечество вообще сможет денег запродуцировать Это смотря в какой валюте Нет универсального подходящего для всех решения.

да, про случаи гиперинфляции я тоже думал.

но практически... они там все дружно применяют номинаторы, если у тебя буханка хлеба стоит триллион, то слово триллион становится чем-то вроде синонима рубль, т.е. самоназвание денег.

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

хотя да, пример Зимбабве и к ним приравненных говорит о том, что fixed number не годится для универсального money_t, туда только decimal number (но опять-же, появляется проблема с бинарной сортировкой).

или запилить zimbabve_t, с отрицательной точностью :)
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283115
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaчто это за закорючка - сравнение или все-таки чего-то там инстациирование
Первый раз вижу чтобы с этим у кого-то были трудности ))
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283141
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaMasterZivПро солярий не скажу, точно не знаю, но под виндой automake есть даже в двух экземплярах.
Другое дело, что это -- вообще в корне неверный подход, тупиковая ветвь развития. Правильная -- CMake.

о чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше.

cmake тоже не панацея, в изначальном виде это так, для детского сада по уровню настроек. он не умеет даже striped pdb в relwithdebuginfo делать, о чем там вообще можно говорить.

хотя cmake хоть допилить можно, да. угу. каждый девелопер сидит и пилит небось :)

Да, видать, ты большой знаток, может подскажешь, что же надо ВМЕСТО CMake-то ?
А то я и не знаю...
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДля денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично.
Другое дело что их нельзя сравнивать, и при сортировке проблемы.
Тут сложность в чем... в преобразованиях double=> String => double. Они не биективные.
И если ты даешь возможность разработчику использовать double как хранилище для
денежных типов - то у него неизбежно появляется соблазн использовать их на всем
спектре операций. А от этого сложно застраховаться. И если на целых числах double
ведет себя вполне прилично то на дробных у нас появляется слабо контролируемая
возможность "пальнуть" себе в ногу. Я видел если не приложения то SOAP-сервисы
которые возвращали финансовые величины через double. Возможно это и не так плохо.
А вот реально плохо когда идёт распространение этого типа на всё приложение.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283143
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaо чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше.


Ну, понятно, что никто, но тебе же он был зачем-то нужен...
Мне лично automake и под линухом, где он вообще царь и бог, на фиг не сдался.
Это путь в никуда.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283144
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaMasterZivпропущено...


А что, если ты попадаешь на тот самый 0.01% ?

0.01% людей ложку в ухо обычно несут, вместо рта, тоже мне достижение

бывает, что надо и ложку в ухо...
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283145
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaВася УткинТ.е. вопрос не в том, что это нельзя сделать в С++, а в том, что типы с таким поведением не введены в стандартную библиотеку С++ и у вас не получается их быстро сделать?
знаешь, в булочную можно и через северный полюс ездить. ну и что что долго, но технически это же возможно, верно?

в типовом современном зашаблонированном C++ (не берем упрощенку вроде C with objects) между "это в принципе возможно" и "это возможно настолько хорошо и удобно, что это даже можно использовать практически" - зачастую просто пропасть, и твой пример - подтверждение

есть gmp, и есть её С++ врапер, если тебе надо...
boost.multiprecition...
Есть и мнго других подобных библиотек, выбирай на вкус...
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283147
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaBarloneДвух знаков недостаточно :) Вон на всех биржах цены с 4 знаками.

а вообще-то суммы (деньги) и цены - это разные типы.

money_t - это всегда два знака
price_t - это как минимум 6 знаков

с количествами отдельная печаль (там знаков может быть до 9)

у бирж все проще - у них нельзя купить половину акции. а вот в области производства и торговли ресурсами - запросто можно купить 1.2321234112 тонны - это нужно, чтоб вписаться до копейки в сумму аванса для счет-фактур.

потому вопрос - какой там фундаментальный тип использовать для этого всего - он не должен озадачивать прикладного говнокодера.

ему нужно конкретно сказать - вот тут money_t, тут price_t, а тут qty_t, и не вздумай попутать или заюзать double - расстрел на месте.

заставить его думать, что там ему тиснуть в параметры std шаблона - это вообще космической наивности и глупости предположения.
нет там таких интеллектуалов среди прикладников, чтоб они изначально разбирались в предметах и требованиях точности расчетов.


nojava, у меня к тебе только один вопрос: тебе таксовать надо, или нет ?
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283155
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima TДля денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично.
Другое дело что их нельзя сравнивать, и при сортировке проблемы.
Тут сложность в чем... в преобразованиях double=> String => double. Они не биективные.
И если ты даешь возможность разработчику использовать double как хранилище для
денежных типов - то у него неизбежно появляется соблазн использовать их на всем
спектре операций. А от этого сложно застраховаться. И если на целых числах double
ведет себя вполне прилично то на дробных у нас появляется слабо контролируемая
возможность "пальнуть" себе в ногу. Я видел если не приложения то SOAP-сервисы
которые возвращали финансовые величины через double. Возможно это и не так плохо.
А вот реально плохо когда идёт распространение этого типа на всё приложение.
я до сих пор на фоксе пишу в основном, а там все числовые переменные double, судя по хэлпу (ограничения совпадают), там нет явных типов, я не могу написать int x, я пишу x = 1 (но это не int а double). ХЗ как там подточено, но select ... order by nPrice, cOther отрабатывает корректно. if x = y тоже корректно, хотя double нельзя сравнивать. Как-то допилили.

ИМХУ надо аппаратно, т.е. в асме, в железе, добавить округление double до заданного разряда после запятой (в идеале десятичного, но и двоичного хватит) и тогда проблема порешается, т.к. куча софт-велосипедов не устоит перед хард-велосипедом, а интел молчит и делает вид что проблемы нет.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283160
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tя до сих пор на фоксе пишу в основном, а там все числовые переменные double, судя по хэлпу (ограничения совпадают), там нет явных типов, я не могу написать int x, я пишу x = 1 (но это не int а double). ХЗ как там подточено, но select ... order by nPrice, cOther отрабатывает корректно. if x = y тоже корректно, хотя double нельзя сравнивать. Как-то допилили.


Да нет, там десятичная арифметика реализована...

Dima TИМХУ надо аппаратно, т.е. в асме, в железе, добавить округление double до заданного разряда после запятой (в идеале десятичного, но и двоичного хватит) и тогда проблема порешается, т.к. куча софт-велосипедов не устоит перед хард-велосипедом, а интел молчит и делает вид что проблемы нет.

Нет, не решит.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283164
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Димыч. Ты - реликт. Тебя надо в музей сдать с табличкой

"Последний кодер на Фоксе" :)

...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283168
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа нет, там десятичная арифметика реализована...
Я про переменные писал, не про типы полей (NUMERIC в DBF десятично хранится как строка из цифр). а просто переменная имеет ограничение в точности 15 десятичных разрядов, нагуглить сходу не получилось, но поверь так и есть. 15 разрядов ничем double не напоминают?
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283170
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДимыч. Ты - реликт. Тебя надо в музей сдать с табличкой
Да, реликт. Ты смысл слова реликт читал? Суть "выжил там где другие подобные не смогли", а выжил потому что рядовому юзеру глубоко фиолетово на все супермодные тенденции в программировании, ему главное чтобы работало и не тормозило. Меня убить может только отказ МС от x32 или смерть МС. Второе вероятнее, т.к. есть Win10x32
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283171
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

А та на коболе или PL/1 писал чтоб реликтом называться?
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283178
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima T,

А та на коболе или PL/1 писал чтоб реликтом называться?
а я не назывался, меня так mayton назвал, а я согласился. Дело не в "писал", а в том что писанина жива. У меня до сих пор пашет прога на FoxPro 2.6 (под DOS), 8 рабочих мест, написано мною 15 лет назад и заброшено, а народ пользуется, я поддерживаю только как админ, сглючило - починю, никаких доработок функционала.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283179
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно стопы-стопы. Никто не реликт. Я пошутил.

Это я со своим Sinclar-ом здесь - реликт.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283180
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНикто не реликт. Я пошутил.
Ну вот :( а мне так приятно было такое обращение.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283183
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivnojavaпропущено...


о чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше.

cmake тоже не панацея, в изначальном виде это так, для детского сада по уровню настроек. он не умеет даже striped pdb в relwithdebuginfo делать, о чем там вообще можно говорить.

хотя cmake хоть допилить можно, да. угу. каждый девелопер сидит и пилит небось :)

Да, видать, ты большой знаток, может подскажешь, что же надо ВМЕСТО CMake-то ?
А то я и не знаю...

ничего лучше cmake в настоящее время нет. как платформы.

но настройки его по-умолчанию никуда не годятся, к примеру даже гугл ничего не знает про cmake pdbstriped
что не может не удивлять - неужчто ни у кого не возникла еще идея отправлять .pdb для того, чтоб получить полноценный stacktrace?

это лишь один из вопросов. таких вопросов там вагон и тележка, мне пришлось написать 2000 строк, чтоб привести его настройки в чувство. не думаю, что каждый C++ девелопер способен на такой подвиг, и что он вообще должен такой подвиг делать.

но для кроссплатформы - да, ничего лучше нет.

зато сколько не качаешь проектов известных, или библиотек - везде, гыгы, поставляют .sln вайлы, что даже как-то не смешно.
говорит о многом
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283189
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TMasterZivДа нет, там десятичная арифметика реализована...
Я про переменные писал, не про типы полей (NUMERIC в DBF десятично хранится как строка из цифр). а просто переменная имеет ограничение в точности 15 десятичных разрядов, нагуглить сходу не получилось, но поверь так и есть. 15 разрядов ничем double не напоминают?

Нет, не напоминают...
В double НЕТ этих разрядов.
...
Рейтинг: 0 / 0
inline extern из библиотеки, как правильно декларировать-имплементировать?
    #39283191
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВ double НЕТ этих разрядов.
читай вики
мантисса 52 бита, 2^52 = 4503599627370496 или ~4,5*10^15. Понял откуда 15 десятичных разрядов?
...
Рейтинг: 0 / 0
25 сообщений из 276, страница 4 из 12
Форумы / C++ [игнор отключен] [закрыт для гостей] / inline extern из библиотеки, как правильно декларировать-имплементировать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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