• Правильное округление десятичных чисел в двоичном коде

    Одна из серьезных проблем работы с десятичными числами, представленными в двоичном коде, является проблема округления двоичного числа до значения представимого десятичного числа, ближайшего к правильно округленному десятичному числу. Многие, даже опытные программисты, не осознают важность этой проблемы, полагая, что работая в формате double, они гарантированны от всяких сюрпризов.  И что задача округления возникает только на этапе вывода результата на консоль. Но это ни так. Мы покажем на примерах, что игнорирование процедуры округления значительно снижает точность расчетов для двоичных чисел с плавающей точкой. Ниже мы обсуждаем эту проблему и даем простой алгоритм правильного округления. Работа алгоритма проиллюстрирована тестовой программой на C++.

  • Что такое ulps и что такое ulp?

    Для решения проблемы сравнения двух близких чисел  был придуман термин ulp.  Аббревиатуру ulp впервые ввел известный ученый в области вычислительной математики  У.Кэхэн [1]. Обозначение ulp (Unit in the Last Place) является английским сокращением «единицы на последнем месте». С тех пор этот термин широко используется в компьютерной литературе, а также применяется в ряде языков программирования. Но, что интересно, единой интерпретации этого термина в настоящее время не существует. В [2] собраны и рассматриваются основные определения термина ulp. В настоящее время существуют разные интерпретации термина ulp. Основные из них даны в работах  У.Кэхэна [1], Д.Харрисона [4] и Д.Голдберг [5].

    Но,  при ближайшем рассмотрении определений этого термина, возникают вопросы. И главный из них, ulp это функция или константа? Ниже мы   покажем, что ulp не функция, а единица  измерения.

  • Что такое точность?

    Поговорим сегодня о точности.

    Интуитивно понятное слово точность, в компьютерной арифметике имеет множество смысловых нюансов, что создает определенную путаницу и иногда приводит к ложным выводам. Кроме того, с понятием  точность связано много других точностных характеристик числа, которые надо себе четко представлять.

    Большая политехническая энциклопедия [1] термин точность трактует как «степень приближения истинного значения рассматриваемых параметров изделия, вещества, системы или процесса к истинному или теоретическому номинальному значению».

    Рассмотрим это определение относительно числовых объектов.

  • КОЕ-ЧТО ОБ ОТНОШЕНИЯХ ЧИСЕЛ ДЕСЯТИЧНЫХ И ЧИСЕЛ ДВОИЧНЫХ

                Двоичная + десятичная ≠ любовь

     

    Привычная для пользователя арифметика, это десятичная арифметика.

    Существуют также b-ичные арифметики, где b- база системы счисления отличная от 10, принимающая любое ненулевое значение [1].

    Для отображения чисел в разных масштабах используется запись чисел с плавающей точкой в виде произведения знаковой мантиссы и некоторой произвольной степени базы. Это, так называемая, экспоненциальная запись числа. Степень базы часто называют экспонентой.

    Если экспонента числа фиксирована и мантисса числа является целым числом, то такой формат называется форматом с фиксированной точкой.  Частным случаем формата с фиксированной точкой является целое число, в котором экспонента равна нулю. Такой формат является форматом целого числа.