Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
BarloneДвух знаков недостаточно :) Вон на всех биржах цены с 4 знаками. а вообще-то суммы (деньги) и цены - это разные типы. money_t - это всегда два знака price_t - это как минимум 6 знаков с количествами отдельная печаль (там знаков может быть до 9) у бирж все проще - у них нельзя купить половину акции. а вот в области производства и торговли ресурсами - запросто можно купить 1.2321234112 тонны - это нужно, чтоб вписаться до копейки в сумму аванса для счет-фактур. потому вопрос - какой там фундаментальный тип использовать для этого всего - он не должен озадачивать прикладного говнокодера. ему нужно конкретно сказать - вот тут money_t, тут price_t, а тут qty_t, и не вздумай попутать или заюзать double - расстрел на месте. заставить его думать, что там ему тиснуть в параметры std шаблона - это вообще космической наивности и глупости предположения. нет там таких интеллектуалов среди прикладников, чтоб они изначально разбирались в предметах и требованиях точности расчетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:18 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaк примеру мировой ВВП в прошлом году это всего 73 триллиона. 92233 позволит этот ВВП суммировать 1263 раз. этого более чем достаточно для всех практических бухгалтерских и финансовых задач - ну не может быть в задаче больше денег, чем человечество способно в принципе произвести. так это еще с точностью до копейки, а если без копейки - это 126300 раз - больше, чем в обозримой перспективе человечество вообще сможет денег запродуцировать Это смотря в какой валюте Нет универсального подходящего для всех решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:39 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Для денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично. Другое дело что их нельзя сравнивать, и при сортировке проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:59 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaтемплейты - это возведенная в абсолют автоматизированная копипаста, так убедительнее звучит? не важно кто копипасту ипсолняет - кодер Вася или компилятор, копипастой от этого она не перестает быть. Не больший копипаст чем инлайн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 15:02 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskynojavaтемплейты - это возведенная в абсолют автоматизированная копипаста, так убедительнее звучит? не важно кто копипасту ипсолняет - кодер Вася или компилятор, копипастой от этого она не перестает быть. Не больший копипаст чем инлайн ты опять решил сесть в лужу? говорили же, для чего нужен инлайнинг - для вкомпиляции некроссплатформенных intrinsic и built-in, без создания абсолютно ненужных stack frame. и даже если в чистом виде - inline он виден лишь желающим почитать ассемблерный код. а эти об эти ваши темплейты нужно ломать глаза каждый день, опять-же, делая парсинг в голове на тему что это за закорючка - сравнение или все-таки чего-то там инстациирование. при этом даже гуру C++ прямо говорят - идея, что давайте все раскопипастим, а компилятор все это чудесно заоптимизирвет - оказалась пшиком, никакого прироста производительности никто так и не смог достичь, зато исполнимый код бухнет, вымывая L2/L3 кеши просто на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 15:45 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Barlonenojavaк примеру мировой ВВП в прошлом году это всего 73 триллиона. 92233 позволит этот ВВП суммировать 1263 раз. этого более чем достаточно для всех практических бухгалтерских и финансовых задач - ну не может быть в задаче больше денег, чем человечество способно в принципе произвести. так это еще с точностью до копейки, а если без копейки - это 126300 раз - больше, чем в обозримой перспективе человечество вообще сможет денег запродуцировать Это смотря в какой валюте Нет универсального подходящего для всех решения. да, про случаи гиперинфляции я тоже думал. но практически... они там все дружно применяют номинаторы, если у тебя буханка хлеба стоит триллион, то слово триллион становится чем-то вроде синонима рубль, т.е. самоназвание денег. а по факту - помня гиперинфляции 90-х, там никто не считал деньги в нацвалюте, базовый учет был в у.е., а в нац.валюту пересчитывали уже в самый последний момент. хотя да, пример Зимбабве и к ним приравненных говорит о том, что fixed number не годится для универсального money_t, туда только decimal number (но опять-же, появляется проблема с бинарной сортировкой). или запилить zimbabve_t, с отрицательной точностью :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 15:57 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaчто это за закорючка - сравнение или все-таки чего-то там инстациирование Первый раз вижу чтобы с этим у кого-то были трудности )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 19:22 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaMasterZivПро солярий не скажу, точно не знаю, но под виндой automake есть даже в двух экземплярах. Другое дело, что это -- вообще в корне неверный подход, тупиковая ветвь развития. Правильная -- CMake. о чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше. cmake тоже не панацея, в изначальном виде это так, для детского сада по уровню настроек. он не умеет даже striped pdb в relwithdebuginfo делать, о чем там вообще можно говорить. хотя cmake хоть допилить можно, да. угу. каждый девелопер сидит и пилит небось :) Да, видать, ты большой знаток, может подскажешь, что же надо ВМЕСТО CMake-то ? А то я и не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:24 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TДля денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично. Другое дело что их нельзя сравнивать, и при сортировке проблемы. Тут сложность в чем... в преобразованиях double=> String => double. Они не биективные. И если ты даешь возможность разработчику использовать double как хранилище для денежных типов - то у него неизбежно появляется соблазн использовать их на всем спектре операций. А от этого сложно застраховаться. И если на целых числах double ведет себя вполне прилично то на дробных у нас появляется слабо контролируемая возможность "пальнуть" себе в ногу. Я видел если не приложения то SOAP-сервисы которые возвращали финансовые величины через double. Возможно это и не так плохо. А вот реально плохо когда идёт распространение этого типа на всё приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:25 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaо чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше. Ну, понятно, что никто, но тебе же он был зачем-то нужен... Мне лично automake и под линухом, где он вообще царь и бог, на фиг не сдался. Это путь в никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:26 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaMasterZivпропущено... А что, если ты попадаешь на тот самый 0.01% ? 0.01% людей ложку в ухо обычно несут, вместо рта, тоже мне достижение бывает, что надо и ложку в ухо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:28 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaВася УткинТ.е. вопрос не в том, что это нельзя сделать в С++, а в том, что типы с таким поведением не введены в стандартную библиотеку С++ и у вас не получается их быстро сделать? знаешь, в булочную можно и через северный полюс ездить. ну и что что долго, но технически это же возможно, верно? в типовом современном зашаблонированном C++ (не берем упрощенку вроде C with objects) между "это в принципе возможно" и "это возможно настолько хорошо и удобно, что это даже можно использовать практически" - зачастую просто пропасть, и твой пример - подтверждение есть gmp, и есть её С++ врапер, если тебе надо... boost.multiprecition... Есть и мнго других подобных библиотек, выбирай на вкус... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:32 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaBarloneДвух знаков недостаточно :) Вон на всех биржах цены с 4 знаками. а вообще-то суммы (деньги) и цены - это разные типы. money_t - это всегда два знака price_t - это как минимум 6 знаков с количествами отдельная печаль (там знаков может быть до 9) у бирж все проще - у них нельзя купить половину акции. а вот в области производства и торговли ресурсами - запросто можно купить 1.2321234112 тонны - это нужно, чтоб вписаться до копейки в сумму аванса для счет-фактур. потому вопрос - какой там фундаментальный тип использовать для этого всего - он не должен озадачивать прикладного говнокодера. ему нужно конкретно сказать - вот тут money_t, тут price_t, а тут qty_t, и не вздумай попутать или заюзать double - расстрел на месте. заставить его думать, что там ему тиснуть в параметры std шаблона - это вообще космической наивности и глупости предположения. нет там таких интеллектуалов среди прикладников, чтоб они изначально разбирались в предметах и требованиях точности расчетов. nojava, у меня к тебе только один вопрос: тебе таксовать надо, или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 20:36 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
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 до заданного разряда после запятой (в идеале десятичного, но и двоичного хватит) и тогда проблема порешается, т.к. куча софт-велосипедов не устоит перед хард-велосипедом, а интел молчит и делает вид что проблемы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 21:13 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima Tя до сих пор на фоксе пишу в основном, а там все числовые переменные double, судя по хэлпу (ограничения совпадают), там нет явных типов, я не могу написать int x, я пишу x = 1 (но это не int а double). ХЗ как там подточено, но select ... order by nPrice, cOther отрабатывает корректно. if x = y тоже корректно, хотя double нельзя сравнивать. Как-то допилили. Да нет, там десятичная арифметика реализована... Dima TИМХУ надо аппаратно, т.е. в асме, в железе, добавить округление double до заданного разряда после запятой (в идеале десятичного, но и двоичного хватит) и тогда проблема порешается, т.к. куча софт-велосипедов не устоит перед хард-велосипедом, а интел молчит и делает вид что проблемы нет. Нет, не решит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 21:29 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 21:45 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivДа нет, там десятичная арифметика реализована... Я про переменные писал, не про типы полей (NUMERIC в DBF десятично хранится как строка из цифр). а просто переменная имеет ограничение в точности 15 десятичных разрядов, нагуглить сходу не получилось, но поверь так и есть. 15 разрядов ничем double не напоминают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 21:52 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
maytonДимыч. Ты - реликт. Тебя надо в музей сдать с табличкой Да, реликт. Ты смысл слова реликт читал? Суть "выжил там где другие подобные не смогли", а выжил потому что рядовому юзеру глубоко фиолетово на все супермодные тенденции в программировании, ему главное чтобы работало и не тормозило. Меня убить может только отказ МС от x32 или смерть МС. Второе вероятнее, т.к. есть Win10x32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:02 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima T, А та на коболе или PL/1 писал чтоб реликтом называться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:08 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima T, А та на коболе или PL/1 писал чтоб реликтом называться? а я не назывался, меня так mayton назвал, а я согласился. Дело не в "писал", а в том что писанина жива. У меня до сих пор пашет прога на FoxPro 2.6 (под DOS), 8 рабочих мест, написано мною 15 лет назад и заброшено, а народ пользуется, я поддерживаю только как админ, сглючило - починю, никаких доработок функционала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:24 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Ладно стопы-стопы. Никто не реликт. Я пошутил. Это я со своим Sinclar-ом здесь - реликт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:27 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
maytonНикто не реликт. Я пошутил. Ну вот :( а мне так приятно было такое обращение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:31 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivnojavaпропущено... о чем твой спич? под виндой и cygwin есть, и что с того? никто не собирает проекты для студии через automake, я и говорил про это выше. cmake тоже не панацея, в изначальном виде это так, для детского сада по уровню настроек. он не умеет даже striped pdb в relwithdebuginfo делать, о чем там вообще можно говорить. хотя cmake хоть допилить можно, да. угу. каждый девелопер сидит и пилит небось :) Да, видать, ты большой знаток, может подскажешь, что же надо ВМЕСТО CMake-то ? А то я и не знаю... ничего лучше cmake в настоящее время нет. как платформы. но настройки его по-умолчанию никуда не годятся, к примеру даже гугл ничего не знает про cmake pdbstriped что не может не удивлять - неужчто ни у кого не возникла еще идея отправлять .pdb для того, чтоб получить полноценный stacktrace? это лишь один из вопросов. таких вопросов там вагон и тележка, мне пришлось написать 2000 строк, чтоб привести его настройки в чувство. не думаю, что каждый C++ девелопер способен на такой подвиг, и что он вообще должен такой подвиг делать. но для кроссплатформы - да, ничего лучше нет. зато сколько не качаешь проектов известных, или библиотек - везде, гыгы, поставляют .sln вайлы, что даже как-то не смешно. говорит о многом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:47 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivДа нет, там десятичная арифметика реализована... Я про переменные писал, не про типы полей (NUMERIC в DBF десятично хранится как строка из цифр). а просто переменная имеет ограничение в точности 15 десятичных разрядов, нагуглить сходу не получилось, но поверь так и есть. 15 разрядов ничем double не напоминают? Нет, не напоминают... В double НЕТ этих разрядов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:56 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivВ double НЕТ этих разрядов. читай вики мантисса 52 бита, 2^52 = 4503599627370496 или ~4,5*10^15. Понял откуда 15 десятичных разрядов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 23:03 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39282899&tid=2018218]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 144ms |

| 0 / 0 |
