Перевод систем счисления (включая перевод римских чисел)

14.05.10

Разработка - Математика и алгоритмы

В обработке реализованы алгоритмы (функции) перевода средствами 1С целых и дробных чисел из одной позиционной системы счисления с неотрицательными целочисленными основаниями в другую. При переводе отрицательных чисел знак сохраняется. Диапазон возможных систем счисления от 2-х до 36-ти. Также реализован перевод в римскую систему счисления из арабской (10-ричная) и обратно (галка «Вкл. римские числа» на форме обработки). Перевод из/в римскую систему счисления реализован только для целых неотрицательных чисел. «Расширенные римские цифры» также не поддерживаются.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
NumberSystems.zip
.zip 25,05Kb
134
134 Скачать (1 SM) Купить за 1 850 руб.

Для бесконечных периодических дробей в результате, есть возможность указания точности выводимого дробного числа. По умолчанию - "0" знаков после запятой. Цифры выше 9-ти обозначаются латинскими буквами от A до Z. Регистр вводимого символа значения не имеет. В итоговом числе символы отображаются в верхнем регистре. Дробная часть отделяется от целой как точкой, так и запятой.

Перед переводом производится проверка на корректность вводимого числа, т.е. на допустимость символов и цифр для данной системы счисления или присутствия более одной точки/запятой или более одного знака «минус» перед числом. Так, например, цифры 5 не может быть в 4-ричной системе счисления, а символа «R» в 20-ричной системе.

Возможна проверка в виде обратного перевода - кнопка «Обратно». Направление последнего перевода показывается стрелкой, расположенной слева на форме.

Объявления реализованных в обработке функций для перевода:

//-------------------------------------------------------
Функция глПереводИзДесятичнойВПроизвольнуюСистемуСчисления(Знач ЧислоДляПеревода, Знач ОснованиеРезультата=2,Знач Погрешность=0) Экспорт Далее
Функция
глПереводИзПроизвольнойСистемыСчисленияВДесятичную(Знач СтрокаДляПеревода, Знач ОснованиеЧисла=2, Знач Погрешность=0) Экспорт Далее
Функция
глПереводПроизвольныхСистемСчисления(Знач СтрокаДляПеревода, Знач ОснованиеЧисла=10, Знач ОснованиеРезультата=2, Знач Погрешность=0) Экспорт Далее
Функция
глПроверитьСтрокуПоПроизвольнойСистемеСчисления(Знач СтрокаДляПеревода, Знач Основание) Экспорт Далее

Функция
глПереводИзДесятичнойВРимскуюСистемуСчисления(Знач ЧислоДляПеревода) Экспорт Далее
Функция
глПереводИзРимскойВДесятичнуюСистемуСчисления(Знач СтрокаДляПеревода) Экспорт Далее
Функция
глПроверитьСтрокуПоРимскойСистемеСчисления(Знач СтрокаДляПеревода) Экспорт Далее
//-------------------------------------------------------

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1371    14    user706545_kseg1971    0    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2339    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5138    Zoltan_Black    11    

2

Универсальные функции Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13933    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10766    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18887    2    HAMMER_59    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. venger 2124 14.05.10 13:45 Сейчас в теме
(0) Кому надо, выдергиваете функции из обработки в глобальник к себе и пользуетесь. Эта обработка просто демонстрация их использования...
2. venger 2124 14.05.10 14:18 Сейчас в теме
(0) Обновил файл, маленькую описку исправил;-) Тестируем, теперь вроде все должно быть нормуль;-)
3. YAN 1374 14.05.10 15:10 Сейчас в теме
А практическое применение возможно и где если не секрет?
4. venger 2124 14.05.10 15:17 Сейчас в теме
(3) Как минимум мне понадобилось для работы со стилями контролов FormEx. Это 10 в 2 и обратно. Потом можно использовать для нумерации чего-нить римскими цифрами. Это пока с ходу, что пришло в голову...
6. venger 2124 14.05.10 16:01 Сейчас в теме
(5) Тоже гуд, только для целых по-моему, без учета знака и без римских;-)

Но что понравилось это вариант определения по символу числа, у меня это отдельная функция, а там красивее, вот так:
Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1
7. Ёпрст 1065 14.05.10 16:07 Сейчас в теме
(6) Ну.. це же Рупор делал.... мозг!

:)
8. Поручик 4692 14.05.10 21:46 Сейчас в теме
Что бы мы делали без web.archive.org? :(
9. Armando 1401 15.05.10 15:26 Сейчас в теме
Мне перевод в другие системы счисления пригодился для "упаковки" guid ссылки в восьмерке, только там использовал, скажем так, 95ричную систему)
10. arithmometr 152 16.05.10 19:14 Сейчас в теме
С римскими числами не все гуд.
Будет полезно почитать:
http://forum.algolist.ru/algorithm-maths-mathematical/663-rimskie-chisla.html
http://ru.wikipedia.org/wiki/Римские_цифры
А также Help по функции РИМСКОЕ() в MS Excel или Roman() в OpenOffice.org Calc
11. venger 2124 17.05.10 11:30 Сейчас в теме
(10) Примерчик не корректного перевода можно
12. arithmometr 152 17.05.10 17:32 Сейчас в теме
(11) Максимальное число, которое можно записать в римской системе = 3999
Возможные варианты записи этого числа:
MMMCMXCIX
MMMLMVLIV
MMMXMIX
MMMVMIV
MMMIM
Для вариантов с 2 по 5 обработка выдает предупреждение о некоректности
15. Арчибальд 2709 18.05.10 09:25 Сейчас в теме
(12) Если возможна запись CM, то никакие LM, XM, VM, IM уже некорректны. Так же как некорректно писать LC вместо L.
16. arithmometr 152 18.05.10 20:27 Сейчас в теме
(15)
Существует «сокращённый способ» для записи больших чисел, таких как 1999. Он не рекомендуется, но иногда используется для упрощения. Отличие состоит в том, что для уменьшения цифры слева от неё может писаться любая цифра:

* 999. Тысяча (M), вычтем 1 (I), получим 999 (IM) вместо CMXCIX. Следствие: 1999 — MIM вместо MCMXCIX
* 95. Сто ©, вычтем 5 (V), получим 95 (VC) вместо XCV
* 1950: Тысяча (M), вычтем 50 (L), получим 950 (LM). Следствие: 1950 — MLM вместо MCML

http://ru.wikipedia.org/wiki/Римский_счёт
18. venger 2124 18.05.10 23:11 Сейчас в теме
17. arithmometr 152 18.05.10 20:30 Сейчас в теме
(15) Рекомендую прочитать Help по функции РИМСКОЕ() в MS Excel. И поэкспериментировать со вторым параметром.
13. O-Planet 6443 17.05.10 20:39 Сейчас в теме
Мдя, и чем не аля перенумератор ;)
19. GSoft 2237 19.05.10 09:53 Сейчас в теме
ребят а кто подскажет - может встречали подобное на 7ке но для систем шифрования паролей

есть справочник пользовательские логины - и уж очень не хочется хранить там пароли в открытом виде
20. spkvxnet 19.09.11 15:44 Сейчас в теме
Полезная обработка. Не нужно самому "выдумывать велосипед"...
21. fixin 4273 28.05.12 11:17 Сейчас в теме
готовые отлаженные функции по переводу в/из систем счисления можно взять в моей "Библиотеке продвинутых функций" также. ;-)
Оставьте свое сообщение