Преобразователь вещественных чисел с регулируемой точностью
Введение
В связи с бурным развитием вычислительных технологий, а также с ежедневно повышающимися требованиями к точности вычислений, возникает необходимость оперировать числами с большим классом точности. При разработке программного обеспечения для высокоточных вычислительных систем, программист во время отладки программного кода вынужден анализировать промежуточные результаты, представленные в виде набора машинных слов. Поскольку машинное слово является по сути двоичным числом, то часто возникает ситуация когда для человеческого восприятия нужно двоичное число представить в более компактном 16-ричном виде или вообще в виде «человеческого» десятичного числа. Оказавшись в такой ситуации, программист спешит обзавестись набором программных инструментов, в числе которых обязательно присутствует программа, позволяющая выполнять переводы чисел в различные системы счисления.
В данной статье описана программа-конвертор, являющаяся, претендентом на «продвинутость» по отношению к аналогичным программам других разработчиков.
К вопросу актуальности создания программы-конвертора
Идея создания данного программного продукта берет свое начало в целом цикле исследований, подтверждающих эффективность перехода к постбинарным форматам чисел с плавающей запятой, в ходе работы над которыми стояли задачи взаимообратного перевода десятичных дробей в двоичные с возможностью получения вещественных чисел высокой точности (вплоть до 10000 значащих цифр после запятой).
Прежде чем приступить к созданию собственного программного продукта, была предпринята попытка поиска уже готовой программы, умевшей конвертировать дробные числа с необходимой точностью. Однако среди множества рассмотренных программ-конверторов не было ни одного полнофункционального, позволяющего задавать точность преобразованного числа. Большинство рассмотренных программ вообще не работали с дробными числами. Из числа тех программных продуктов, которые все-таки справились с конвертированием дробных чисел, можно отметить, например, программу «.:DOS:. Перевод чисел» и онлайн-сервисы: «Система счисления онлайн», «Wolfram Alpha». Но вопрос точности получаемых после конвертирования дробей оставался по-прежнему открытым.
При этом следует отметить, что онлайн-сервис Wolfram Alpha, оставил конкурентов далеко позади, порадовав возможностью представления двоичной дроби с точностью до 2066 символов. Однако данная процедура требует от пользователя терпения, поскольку из-за отсутствия выбора точности конвертирования результат выводится порциями и для получения новой порции (опция «Показать больше цифр») приходится каждый раз обновлять результат. При этом полученный результат представлен в виде графического файла, и чтобы его использовать как число, необходимо дополнительно подключать сервисы распознавания текста.
Кроме того, ни одна из рассмотренных программ-конверторов не учитывала особенности перевода вещественных чисел, заключающиеся в том, что большинство вещественных чисел невозможно представить в различных системах счисления одинаково точно. Поэтому, возникает необходимость преднамеренного учета погрешности при переходе между десятичной и двоичной системами счисления. Для более точной проверки результата необходимо иметь возможность выбора количества значащих символов после запятой.
Таким образом, созданная собственная программа-конвертор (bin-dec-hex fractional number converter) лишена указанных выше недостатков и фактически способна работать с вещественными числами любой длины (установленный предел в 10 000 цифр можно расширять по мере необходимости).
Особенности работы и возможности
программы bin-dec-hex fractional number converter
На рис. 1 представлен интерфейс программы bin-dec-hex fractional number converter (далее b-d-h converter) при конвертировании числа p в двоичную дробь с точностью 5 000 двоичных цифр.
Рис. 1. Интерфейс программы bin-dec-hex converter
в режиме представления числа p (16 значащих цифр) в 2 с/с
с точностью 5 000 двоичных разрядов
В качестве особенностей программы b-d-h converter можно выделить следующие:
1) Кроссплатформенность. Обеспечивается тем, что данная программа написана на языке java, виртуальная машина которой позволяет запускать приложения как в ОС Windows, так и в *nix-подобных систем.
2) Дружественный интерфейс. В связи с ростом планшетных компьютеров и сенсорных экранов, приветствуется наличие экранной клавиатуры, т. к. не всегда стандартная экранная клавиатура является удобной в использовании. Также, основные функции программы продублированы в комбинациях клавиш для быстрого вызова.
3) Регулируемая точность преобразования. Пользователю предоставляется возможность самому вручную выбрать точность преобразования чисел (количество цифр после запятой) от 0 (только целая часть числа) до 10 000. Точность числа по умолчанию — 1 000 цифр.
4) Ведение истории конвертирования с возможностью сохранения в файле. После каждой операции, в поле «История операций» добавляются следующие строки: исходное число, направление конвертирования, результат преобразования.
5) Загрузка исходного числа из файла. Не всегда удобно вводить числа большой длины вручную, особенно, когда они являются результатами вычислений. В таком случае, их удобнее записать в файл. Программа позволяет загрузить такой файл в поле ввода числа.
6) Мультиязычный интерфейс. Программа способна «общаться» с пользователями на русском, украинском, английском и немецком языках.
Непохожесть программы b-d-h converter на аналогичные конверторы простирается дальше ее функционала и касается также алгоритмического базиса. Прежде всего, программа не использует математические возможности микропроцессора, поскольку микропроцессор не способен производить настолько точные вычисления. Все данные программа представляет в виде строк символов, и производит необходимые преобразования, используя механизмы посимвольной обработки. Такие процедуры реализуют программную математику (т. е. все математические операции выполняются как операции над текстовыми строками), скорость вычисления которой ниже вычислений с аппаратной поддержкой. Однако при работе даже с максимально длинными числами, время конвертирования не превышает 2–3 секунд (в строке статуса программы реализован счетчик времени выполнения текущей операции, значения которого также сохраняются в истории).
Выводы
В последнее время наблюдается рост количества специалистов компьютерных наук и технологий. Поэтому в вузах все большее число студентов компьютерных специальностей начинают изучение компьютерных наук с основ информатики, где они непременно сталкиваются с представлением вещественного числа в различных системах счисления. В этом случае программа b-d-h converter может выступить не только в качестве рабочего инструмента для программистов или инженеров компьютерных систем, а и в качестве тренажера для студентов. Предполагается скорое появление данного конвертора на портале компьютерного моделирования ДонНТУ, доступного для свободного использования. Сейчас b-d-h converter расположен на моем персональном сайте.
В заключении следует отметить, что, несмотря на скрупулезный поиск аналогов разработанного конвертора, способных на здоровую конкуренцию, — таковых не нашлось, мнение об уникальности и единственности в своем роде этой программы все-таки остается субъективным. Ведь охватить весь объем подобного программного обеспечения не представляется возможным. Поэтому обращаюсь с призывом сообщать по электронной почте сведения о программах-конверторах или онлайн-сервисах, обладающих не меньшими возможностями, чем представленная программа b-d-h converter.