Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
nojavaзато сколько не качаешь проектов известных, или библиотек - везде, гыгы, поставляют .sln вайлы, что даже как-то не смешно. говорит о многом Это ни о чём не говорит, народ спрашивает: а где у вас .sln ? Ему и говорят: на, держи, если тебе так надо. К тому же CMakе достаточно молод, и многие проекты его старше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 23:12 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivВ double НЕТ этих разрядов. читай вики мантисса 52 бита, 2^52 = 4503599627370496 или ~4,5*10^15. Понял откуда 15 десятичных разрядов? Дима имеет в виду что такое фиксируется: Код: plaintext 1. А если добавлять дробную часть или увеличивать мантиссу то точность теряется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 23:20 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivnojavaпропущено... знаешь, в булочную можно и через северный полюс ездить. ну и что что долго, но технически это же возможно, верно? в типовом современном зашаблонированном C++ (не берем упрощенку вроде C with objects) между "это в принципе возможно" и "это возможно настолько хорошо и удобно, что это даже можно использовать практически" - зачастую просто пропасть, и твой пример - подтверждение есть gmp, и есть её С++ врапер, если тебе надо... boost.multiprecition... Есть и мнго других подобных библиотек, выбирай на вкус... абсолютно все неадекватны, потому что их еще и в базе данных нужно данные. вот есть IEEE формат decimal128. отлично подходит. но запаливать 16 байт чтоб сохранить число вида 12.3 - это финиш. известные базы данных, судя по исходникам (mysql, postgresql) используют тип Decimal/NUMERIC как BСD вариации, с переменной длиной. идея хорошая, но реализация так себе. и классический мейнфреймовый packed BCD - слишком низкая плотность кодирования. плюс BCD, и DFP типы имеют еще существенный косяк - они не поддерживаются процессорами (x64), даже сложение делается через библиотечные крайне тормозные функции. пока мне видится лишь одно более менее идеальное решение - fixed-point number на int64 , с упаковкой в базу данных значения целого методом LEB кодирования. так получается наименьшие затраты как на хранение на диске, так и в памяти, при этом сложение, вычитание - делаются на нативной скорости процессора (ибо это суть обычные целочисленные сложения), а деление и умножение лишь немного подторможены в сравнению с int. одна печаль - зимбабве с их триллиардами, но думаю и тут есть решение (нужно просто рассмотреть отрицательную предопределенную значность, эдакий number(-10), когда миллионы и миллиарды будут гарантировано представлены как нули. можно и int128 fixed-point сделать, но, мягко говоря, не все процессоры могут арифметику в общем боротьба трываэ (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 23:24 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
война с мельницами в полный рост суть страчена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 03:32 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivВ double НЕТ этих разрядов. читай вики мантисса 52 бита, 2^52 = 4503599627370496 или ~4,5*10^15. Понял откуда 15 десятичных разрядов? там разряды двоичные. 52 двочных разряда это не то же самое, что 15 десятичных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 05:00 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Siemarglвойна с мельницами в полный рост суть страчена не совсем с мельницами. существующие подходы и библиотеки - это разношерстное нагромождение исторических нелепостей(big-endian), заблуждений (бывают 7-ми битные компы) и простоо устаревших подходов(к примеру - не более 32 бита). потому если и лепить ультимативную среду-платформу-библиотеку, то нужно переосмыслить существующее и накопленное, и выбрать лучшее. а так как время и ресурсы неограничены - то даже универсальный и оптимальный тип для денег можно выбирать довольно долго вот осознание пришло о разном формате хранения на диске(сериализации по сети в тч) и в памяти - уже мегапрогресс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 11:22 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TДля денег double достаточно. Чтобы погрешность в 16м десятичном знаке исказила результат - надо постараться. Для расчетов это не критично. Другое дело что их нельзя сравнивать, и при сортировке проблемы. Дима, это утверждение примерно того же сорта осведомленности о программировании, что и "money_t - это всегда два знака" Проблемы у double при сортировке - простое следствие несравнимости. Одной несравнимости достаточно - если ты не можешь надежно судить - одинаково ли количество денег в двух кошельках, то, может быть, что-то не так с твоей математикой. Но все гораздо хуже. Пусть есть некий double. Известна его мантисса и показатель степени. Ближайшие значения к заданному double слева и справа определяются значениями мантиссы. Между заданным и ближайшим (с любой стороны) никаких других представимых чисел нет. То есть - вблизи нуля double-чисел "много", а по краям "мало" - они гораздо реже посажены, Т.е. добавляя минимально допустимую денежную единицу (копейку) к уже накопленной сумме, ты, рано ли поздно, перестанешь сдвигаться в сумме накопления. Такое сложение застрянет на далее неизменной накопленной сумме в тот момент, когда расстояние до ближайшего числа превысит копейку. Вряд ли это можно признать за удачную денежную математику. Которая, там, где есть, так или иначе, опирается на целочисленную парадигму - добавление единицы дает либо новое число, либо переполнение, но не оставляет аккумулятор неизменным. PS Прошу прощения за вступление на чужую территорию. Оправдываюсь тем, что существо дела здесь к CPP отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 12:13 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 13:12 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
mayton, ты это к чему? к тому, что вам это не интересно? Это может как-то отменить бесконечный цикл, или изменить результат добавления к миллиарду копейки ? А так-то оно понятно - нахер они кому сдались - одинаковые чиселки в итого по дебету и кредиту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 13:47 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
booby, что за враждебность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 14:48 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
boobyПрошу прощения за вступление на чужую территорию. Оправдываюсь тем, что существо дела здесь к CPP отношения не имеет. Не волнуйтесь, в этом топике мало что имеет отношение к С++. Больше к цирку ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 15:11 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
mayton, ой. (; (извини, я не предполагал, что ты соберешься пугаться обижаться) всяко слово может иметь значение, не иметь, или его значение зависит от контекста. в последовательности слов твое было по времени комментарием на мое. смутило меня // 9e15 Дальше не враждебность, а ответ на один из контекстов, в котором оно могло появиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 15:16 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Ладно проехали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 15:31 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivтам разряды двоичные. 52 двочных разряда это не то же самое, что 15 десятичных... Давай с другой стороны: у тебя 52-хбитное беззнаковое целое. Вопрос какое максимальное число состоящее из девяток (в десятичном представлении) можно хранить? Сколько девяток максимум возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 18:45 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
mayton Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну, нормальная потеря значимости. О ней booby и говорил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 20:06 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivтам разряды двоичные. 52 двочных разряда это не то же самое, что 15 десятичных... Давай с другой стороны: у тебя 52-хбитное беззнаковое целое. Вопрос какое максимальное число состоящее из девяток (в десятичном представлении) можно хранить? Сколько девяток максимум возможно? И с этой точки зрения тоже нельзя. Потому что double / float -- это не целые. А числа с нормализованной мантиссой и порядком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 20:09 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
MasterZivПотому что double / float -- это не целые. А числа с нормализованной мантиссой и порядком. Мы на форуме философов-теоретиков или все-таки технарей? Давай в цифрах рассуждать. Я прекрасно знаю что есть догма "расчеты в числах с плавающей запятой неточны". Я знаю откуда она родилась. Из float , т.к. там мантисса всего 23 бита, 2^23 = 8388608, т.е. даже до 9 десятичных разрядов не дотягивает. Забудь про float. У double мантисса 52 бита и в них влазит ровно столько сколько влазит в 52 бита, как их логически трактовать вообще без разницы, это просто хранилище емкостью 52 бита. Вспомни математику, мантисса это именно начало числа (неважно двоичное оно или десятичное), т.е. первые N разрядов, а порядок это просто смещение где поставить разделительную точку. Так вот это N = 52 в двоичной или = 15 в десятичной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 20:50 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Мне кажется в споре о float/double мы просто можем рассмотреть конкретные случай потери точности (присвоение, добавление копейки, сравнение) и оценить насколько эти случаи опасны или критичны для финансовой арифметики. Один случай я очертил. И мантиссу можно уточнить. Там явно будет не 9*10^15 а другое число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 20:50 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TМы на форуме философов-теоретиков или все-таки технарей? Давай в цифрах рассуждать. Я прекрасно знаю что есть догма "расчеты в числах с плавающей запятой неточны". Я знаю откуда она родилась. Из float , т.к. там мантисса всего 23 бита, 2^23 = 8388608, т.е. даже до 9 десятичных разрядов не дотягивает. Дима подожди. Не горячись. Давай применительно к float/double и IEE754 рассмотрим режимы т.н. Floating-Point Behavior https://msdn.microsoft.com/en-us/library/e7s85ffb.aspx и как они могут повлиять на результат. А после этого еще дополним наши тезисы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 21:45 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
А тут и горячиться не надо: используете float/double - добро пожаловать в удивительный мир приближённых вычислений. А в мире приближённых вычислений надо и за порядком следить и за используемыми формулами, а не только за алгоритмами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 22:07 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Василий. Стоп-стоп. У нас есть уже конкретные вопросы. Дима - человек дотошный. Он ставит вопрос о смысле 52 битов мантиссы. Он считает что есть взаимное и однозначное соотвенствие между целым числом в 52 бита и double числом где мантисса соотсветствует этим битам. Я плюсую но дополнительно вспомниаю что есть relaxing the rules - и даю ссылку на опции Visual C++ и предлагаю обсудить. Я также предлагаю перечислить конкретные кейсы где double/float будет терять копейки. А ты возвращаешь нас контекст философии и говоришь дескыть "добро пожаловать в удивительный мир.." Ну к чему это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 22:23 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
maytonНу к чему это?К тому, что "расширенная плавучка" (80-битный extended) - специфика интел, которая позволяет работать с более высокой точностью на промежуточных вычислениях и разово округлить только конечный результат. А "удивительный мир приближённых вычислений" при том, что это может (сильно) отличаться "считаем всё в 64-битном представлении". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 22:29 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
maytonЯ также предлагаю перечислить конкретные кейсы где double/float будет терять копейкиЭто имеет смысл, когда в результате получается исчерпывающий список причин и рекомендаций. А здесь - явно не тот случай. "Копейки теряются" вне зависимости от используемых чисел - как только появляются операции деления, могут появиться и дробные копейки. Это вообще никак не зависит от представления числа. Нельзя избежать "дробных копеек" можно только минимизировать вероятность их появления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 22:37 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivПотому что double / float -- это не целые. А числа с нормализованной мантиссой и порядком. Мы на форуме философов-теоретиков или все-таки технарей? Давай в цифрах рассуждать. Я прекрасно знаю что есть догма "расчеты в числах с плавающей запятой неточны". Я знаю откуда она родилась. Из float , т.к. там мантисса всего 23 бита, 2^23 = 8388608, т.е. даже до 9 десятичных разрядов не дотягивает. да дело не в этом, какая там мантисса длиной, а в том, что дроби разные, одни десятичные (в представлении людей), другие -- двоичные. Понятие "иррациональное число" знаешь ? Вот ещё подумай, что рациональное число в одной системе счисления не обязательно является рациональным числом в другой системе счисления. Примеры -- числа 0.1 и 0.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 22:57 |
|
||
|
inline extern из библиотеки, как правильно декларировать-имплементировать?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov"Копейки теряются" вне зависимости от используемых чисел - как только появляются операции деления, могут появиться и дробные копейки. Это вообще никак не зависит от представления числа. Нельзя избежать "дробных копеек" можно только минимизировать вероятность их появления. Прошу прощения. Я здесь не спорю а просто дополняю. Привожу фрагмент статьи Никлауса Вирта. http://citforum.ck.ua/programming/digest/wirth/ Представление чисел Здесь ключевым вопросом является выбор основания числа. Практически все ранние компьютеры характеризовались основанием 10 - представление на основе десятичных цифр, как каждого из нас учат в школе. Однако двоичное представление с использованием двоичных цифр является, очевидно, более экономичным. Для представления целого числа n требуется log10(n) десятичных цифр, но всего лишь log2(n) двоичных цифр (бит). Поскольку для представления десятичной цифры требуется четыре бита, для десятичного представления требуется примерно на 20% больше памяти, чем для двоичного, что показывает очевидное преимущество двоичной формы. Тем не менее, разработчики долгое время сохраняли десятичное представление, и оно присутствует и сегодня в форме библиотечного модуля. Это связано с тем, что разработчики продолжали верить в необходимость точности всех вычислений. Однако ошибки возникают при округлении, например, после выполнения операции деления. Эффекты округления могут различаться в зависимости от способа представления чисел, и двоичный компьютер может выдать результаты, отличающиеся от результатов десятичного компьютера. Поскольку финансовые транзакции - где более всего существенна точность - традиционно выполнялись вручную с использованием десятичной арифметики, разработчики полагали, что компьютеры должны производить во всех случаях те же результаты - и, следовательно, фиксировать те же ошибки. Двоичная форма в общем случае приводит к более точные результатам, но десятичная форма остается предпочтительным вариантом в финансовых приложениях, поскольку десятичный результат в случае потребности легко проверить вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 23:05 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39283340&tid=2018218]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 287ms |
| total: | 564ms |

| 0 / 0 |
