Pull to refresh

Comments 13

Кстати, интересно было бы почитать про практическое использование библиотек gmp, mpir, mpfr, boost.multiprecision.
теперь используйте ваш класс для решения этой проблемы.
Интресно что получиться.
Ничего хорошего. В том соотношении очень быстро накапливается погрешность, независимо от того, какой она была изначально.
Обязательно попробую, отпишусь по результатам.
Это обычное бинарное представление целого числа, в которое нужно возвести 10, чтобы при перемножении на мантиссу в нормализованном виде получить исходное число


Как-то непоследовательно выходит. Вы сперва упоминаете, что экспонента по основанию 2. Потом вдруг всплывает эта цитата. А ещё ниже вы раскладываете 640 снова по экспоненте 2…
Там должно быть 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
Чтобы не получилось рисование совы, нужно просто читать по порядку, включая предыдущий параграф.
Sign up to leave a comment.