а еще припоминаю поучительный анекдот про проггера банковской системы, который округлял дробные центы не "по-бухгалтерски" а всегда вниз, и эти остаточки переводил на отдельный счет. как обнаружили мошенничество? этот счет был зареган на условного Ярослава Ярославовича Ярославина, и в какой-то момент (довольно поздно кстати, прошло несколько лет уже и чел собрал на этом счету уже несколько млн. долл) кто-то просто догадался отсортировать список взкладчиков по-алфавиту) было в 60-х годах, во времена кобола с тех пор именно для финансовых расчетов в первую очередь, а вовсе не для науки, во всех языках поддерживатеся тип double
Комментарии: 96
Vga
финансы в дабле не считаются. они считаются в фиксед-пойнте
Ponytale
видимо тогда считались
Vga
а пруф у тебя есть, что даблы для финансов придумали? звучит сомнительно
Ponytale
погугли. эту историю прочитал давно где уже не помню
Serge
Насколько я знаю, финансы считаются до 4 знака за запятую, остальное нетрудовой доход банка
Ponytale
точно не так. там гауссово округление используется, при котором в среднем банку ничего не перепадает но это сейчас так
Vladimir
А я ждал "... и тут в банк приходит настоящий Ярослав Ярославович Ярославин, с документами, подтверждающими личность, и хочет открыть счет, а ему и говорят..."
Serge
Моя фамилия Итого...
Karboflex
Первый делают на барометре или микрофоне второй нуу в таком варианте это какаянибудь проволка у которой сопротивление замеряют
Tiny
Floating point для финансов жопа. Не используют
Karboflex
Дабл вобще хз когда и зачем придумали ) один фиг без дибы фортрана он бесполезен
Vga
> One of the first programming languages to provide single- and double-precision floating-point data types was Fortran. Когда это на фортране финансы считали
Ponytale
прям с первых версий в фортране даблы были? в коболе не раньше ли
Karboflex
Вы ещё уточните стандарт флоатингпоинта
Vga
тут написано не "с первых версий", а "один из первых языков где появились"
Tiny
Вообще толковая работа с флоатами сама по себе жопа. Я когда с вычислительной геометрией работал этого говна наелся
Karboflex
Для этого надо было брать либу фортрана и просто писать прокладку на свой язык)
Tiny
Причем тут это?
Karboflex
Потому что там на выходе точность остается до последнего знака а не выходит погулять уже на первой же операции когда переменная оказывается меньше машинной эпсилон для другой
Kir
Вот кстати да, Фортран до сих пор используется, даже пару моих преподавателей делают расчеты (часть) на нем. Говорит, когда у тебя матрицы порядка сотен тысяч и по строкам, и по столбцам, лучше на фортране
Ponytale
они просто не умеют ни во что другое вот и говорят так. ну и либы на фортране математические не доконца переведены на другие языки, как я слышал. например, LINPACK
Karboflex
Не самая лучшая ссылка по теме но с телефона тока такая)
Ponytale
пасебо я читаю английский
Karboflex
А то знаете ли там четные округляются вверх нечетные вниз Или наоборот)
Vga
тогда переформулируй вопрос, сейчас он выглядит бессмысленно
Ponytale
а меня нет вопросов только путь)
Tiny
Я про накопление ошибок и прочее. Говнецо всплывет на любом языке
Vga
судя по вики, до 2002 года в коболе флоата не было ВООБЩЕ А значит и в финансовом мире, а дабл - научный формат
Karboflex
А современный стандарт флоатов появился только в 74 году
Vga
Там не было никакого
Karboflex
До этого кто во что горазд
Vga
использовался как раз формат с фиксированным количеством знаков после запятой - а конкретно двумя десятичными
Karboflex
То что мы сейчас считаем флоатом на самом деле стандарт интела но такто были и другие
Vga
Если ты про IEEE-754, то вообще в 1985
Karboflex
Сцук подвела память) Сейчас вобще хотят заменнить на позит
Vga
на что?
Karboflex
Есть даже несколько микроконтроллеров с этим типом флоатов Доугой формат флоата
Vga
и в чем его достоинства? и как он называется гуглибельно?
Karboflex
32 бита позита покрывает динамический диапазон дабла ieee
Kir
Но вот компилятор, который у нас использовался, бесил тем, что усрись, но строку делай короткой
Vga
обычно не хватает точности, а не диапазона флоата. а если оно покрывает больший диапазон - то точность неибежно ниже иначе на перфокарту не влазит?
Karboflex
Там пошалили с запаковаой
Kir
Тем временем советский ученый с терменвоксом, который гораздо сложнее: Да нее, переключателей 0/1 на пульте не хватало уже
Karboflex
И тем что в обычном флоате не использует около 30% всех вариантов
Ponytale
https://bit.listserv.ibm-main.narkive.com/STTPw150/cobol-floating-point-revisited : As many of you know, IBM Enterprise COBOL supports only single- and double-precision IBM hexadecimal floating-point (HFP) data types. In particular, it does not support extended-precision HFP or any of single-, double-, or extended-precision IEEE binary floating-point (BFP) values. https://en.wikipedia.org/wiki/IBM_hexadecimal_floating-point : Hexadecimal floating point (now called HFP by IBM) is a format for encoding floating-point numbers first introduced on the IBM System/360 computers, and supported on subsequent machines based on that architecture,[1][2][3] as well as machines which were intended to be application-compatible with System/360. https://en.wikipedia.org/wiki/IBM_System/360 : The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. Мне дальше копать в сторону кобола и двойной арифметики уже лень)
Vga
первое обсуждение как-то поновее 2002-го...
Karboflex
https://youtu.be/wFuoEGVLQqo
Ponytale
а можно очень вкратце: какие основные проблемы IEEE 754 решает этот новый формат, зачем он нам?
Karboflex
Там нет нан Можно от балды наговнокодитьи и не пожрать каках)
Ponytale
спорное утверждение
Karboflex
Ну ничто не бесплатно дается там машинное эпсилон на числовой последовательности то растет то убывае ( у фортранистов тут инсульт )
Vga
а разве NaR чем-то от NaN отличается?
Karboflex
Нан около 30% всех возможных вариантов занимает
Vga
довольно расточительно, да
Karboflex
Вобще по большому счету это вызывает проблемы только в машинном обучении
Vga
https://medium.com/the-technical-archaeologist/is-cobol-holding-you-hostage-with-math-5498c0eb428b еще один источник, утверждающий что кобол использует именно десятичный фиксед-пойнт
Ponytale
хорошая статья, и правда ведь в современных актуальных ЯП нету базового типа с фиксированной запятой, причем с настраиваемым кол-вом разрядов в целой и дробной части. удивительно, почему мир пошел куда-то снова в сторону от очевидного
Karboflex
Там подцепил нан в середине а двльше вся сетка не валеквате
Vga
ну в дельфи есть тип конкретно для денег ну на позитах нар подцепишь и что изменится? он же генерится как результат некорректной операции, типа 0/0 а так - для не-финансовых вычислений флоат обычно удобнее и он поддержан в железе
Karboflex
Просто в насыщение уходит
Vga
флоаты тоже в насыщение уходят, +-inf, не?
Karboflex
Там нет пути назад
Ponytale
приведенный в статье пример с рекурсией мгновенно ломает это утверждение)
Vga
NaN это именно сигнал недопустимой операции - деление на ноль, корень из минуса, etc
Vga
она специально подобрана чтобы флоат ломать
Karboflex
Если поймал нан даьше всё будет нан
Ponytale
т.е. да, удобнее и поддержан. но немного ограничен. точнее, почти всегда ограничен и нужно всегда дополнительно считать погрешности
Vga
а позит из нара позволяет что-то осмысленное посчитать?
Karboflex
Как обработчик настроишь стандарта то ещё нет
Ponytale
да любое рекурсивное вычисление когда предыдущее значение станет болтаться в зоне больших машинных эпсилонов, например у нуля, приведет к этому же это что-то из разряда странных аттракторов получится и теорий хаоса
Vga
у флоатов есть известные недостатки, но видимо плюсы в большинстве случаев перевешивают
Ponytale
хотя лол - они же из округлений флоатов и получились)) главный "плюс": это возможность прогать недопрограммистам в промышленных масштабах)
Vga
фиксед с собой тащит приколы целочисленной арифметики, которая тоже иногда выносит мозги, емнип Да и научный формат числа кстати тоже флоат не только. на фикседе не получишь одновременно разрешение флоата и динамический диапазон флоата в том же количестве бит ну или точнее просто динамический диапазон
Ponytale
плавающая "фиксированная" запятая - не альтернатива ли?
Vga
Это как?
Karboflex
Даже если показатель степени запаковать 1 бит да потеряешь)
Aleksey
Самая лучшая шутка флоат состоит в том что не факт что при условии а=b=5; (int16_t)(a) будет равно (float)(b) даже после приведения типов
Ponytale
а сорян не туда подумалось
Vga
у тебя полчилось "вровень выступает!", да)
Karboflex
Можно ведь собрать структуру в одной переменной храним число в другой положение запятой
Vga
ну луа как-то работает при целочисленных вычислениях в пределах разряядности мантиссы и получаем что? правильно, флоат!
Karboflex
Не совсем ведь можно использовать какой хочешь показатель
Vga
а какая разница? недостатки флоата растут из его идеи. а не реализации иеее754
Aleksey
Ага особенно если там каким то макаром присутствует геометрия и придется вычислять тангенсы ;) сразу все к чертям летит и опять да здравствует флоат
Ponytale
придумать такой формат, который числа вида 10000000.00000001 на лету перепаковывает, убирая одинаковые промежуточные нули, что-то типа кодирования Шеннона использовать. и в котором гарантируется n значащих цифр, не важно где они находятся: в начале, середине или конце числа. сорян, в порядке полуночного бреда) это не шутка, это жизнь да, это и имел в виду под плавающей фиксированной запятой но это не решает проблему чисел вида 10000.00001 где очень большая целая часть и есть маленькая дробная
Karboflex
Там есть проблемы поинтереснее например 0.1 не ложится во флоат изза показателя степени)
Vga
флоат наиболее универсален и иммеет известные недостатки. Когда они критичны тогда и используется что-то нестандартное
Karboflex
Например инкримент)
Karboflex
А где хранить информацию о том насколько запятая уплыла)?
Kir
Шутки шутками, а снижение порога вхождения в IT и снижение стоимости персональных машинок резко бустанули всю отрасль. Кто держался за супермощные мейнфреймы/вычислительные залы те резко уступили долю рынка или пошли на дно (даже словарь моей клавиатуры сейчас не узнал это слово, мейнфрейм). Но за PHP прощать не стоит