Комментарии 13
Кстати, интересно было бы почитать про практическое использование библиотек gmp, mpir, mpfr, boost.multiprecision.
Это обычное бинарное представление целого числа, в которое нужно возвести 10, чтобы при перемножении на мантиссу в нормализованном виде получить исходное число
Как-то непоследовательно выходит. Вы сперва упоминаете, что экспонента по основанию 2. Потом вдруг всплывает эта цитата. А ещё ниже вы раскладываете 640 снова по экспоненте 2…
«Поэтому для бизнес-логики, как правило, не используют C/C++, а берут C# или Python, где в стандартной библиотеке уже встроен тип Decimal»
Как-то это слишком толсто. Выбор таких разных платформ только из-за присутствия некой функциональности в стандартной библиотеке, которая, кстати, туда попадает из более низкоуровневых библиотек? Вообще подобные утверждения как-то иррелевантны теме статьи, упомянуть о наличии таких встроенных средств в высокоуровневые языки можно без излишней «рационализации».
Как-то это слишком толсто. Выбор таких разных платформ только из-за присутствия некой функциональности в стандартной библиотеке, которая, кстати, туда попадает из более низкоуровневых библиотек? Вообще подобные утверждения как-то иррелевантны теме статьи, упомянуть о наличии таких встроенных средств в высокоуровневые языки можно без излишней «рационализации».
Всё довольно просто, тема статьи касается в том числе отсутствия в стандартной библиотеке C++ типа представления вещественного числа с фиксированной точкой. В принципе если работаешь с БД с numeric/decimal типами, то преобразовывать их в типы float/double, а уж тем более держать строкой, не самое разумное решение. Поэтому для высокоуровневой работы и берут высокоуровневые языки.
Со статьей идет несколько файлов с исходниками одной из возможных реализаций decimal, а также с небольшим тестом вещественных чисел для лучшего усвоения материала.
Интересно было бы посмотреть. Только вот ссылок не нашел. и какого-то официального github для журнала тоже. Направите?
чтобы получить нормализованную мантиссу, нам нужно поделить число на 512 — максимальную степень двойки, меньшую числа, получим 640 / 512 = 512 / 512 + 128 / 512 или 1 + 1/4, что дает в двоичной записи 1,01, соответственно, в битах мантисы будет 0100000 00000000 00000000;
«А теперь нарисуем сову!»
Честное слово, вот это не язык для обучения, это больше похожу на попытку как-то объяснить свои мысли.
Первый же сайт из гугла (после таких же косноязычных википедий) объясняет куда проще и наглядней:
Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде.
Для этого переведем число в двоичное представление.
640 = 1010000000
Сдвинем число на 9 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.0100000000
Экспонента exp=9
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Всё, точка, приплыли! Учимся работать с числами с плавающей точкой и разрабатываем альтернативу с фиксированной точностью десятичной дроби