Римские цифры в арабские php
Из Басры в Рим. Преобразовываем арабские числа в римские
Доброе время суток, Хабраюзер.
Разрабатывая в основном для платформы J2ME, я всегда старался вносить какие то изюминки в свои проекты. Так, однажды, мне понадобилось выделить пункты меню.
Стандартное решение, через тире или пронумеровав их, использовать не очень хотелось, но другие варианты тогда у меня отсутствовали. Обдумывая как бы лучше оформить эти пункты, я случайно наткнулся на свою старую школьную тетрадку по истории, в которой пункты были пронумерованы с использованием римских цифр. Бинго!
Стоит признаться, на то время моих познаний в римских цифрах хватало только для подсчета до второго-третьего десятка. Что вообще то для нумерации пунктов должно было хватить. Но как любой программист, захотелось иметь готовое решение, которое смогло бы переводить любые целые десятичные арабские числа в эквивалентные им римские.
В Википедии нашлась статья с описанием Римской СС, и вскоре я набросал алгоритм перевода из арабских чисел в римские.
I — 1
V — 5
X — 10
L — 50
C — 100
D — 500
M — 1000
Ноль отсутствует вообще, поэтому будем использовать пустое значение.
Итак, сам алгоритм достаточно прост:
1. Выделяем (если есть) количество целых тысяч. Полученное значение позволить сгенерировать строку с n количеством «M» (читаем, n*1000).
Пример: 2012 после первого пункта даст «MM»
2. Получаем остаток после деления на 1000, чтобы выделить в дальнейшем следующие значения.
3. Выделяем (если возможно), целые 500. При этом учитываем что если полученное значение равно 4 (5+4=9), то следует записывать как значение 1000-100, что в римский СС равнозначно «CM».
Пример: 1887 после этого пункта даст нам «MD».
1945 соответственно «MCM».
4. Получаем остаток от деления на 500.
5. Делим на 100 чтобы выделить целые сотни и складываем к предыдущему результату. Учитываем что если получили 4, что равнозначно 400, то записываем как 500-100, то есть «CD».
Пример: 1709 даст после этого шага «MDCCC».
6. Получаем остаток от деления на 100.
7. Выделяем из него целые пол сотни. Если значение будет равно 4 (то есть 90), то записываем как 100-10, что равно «XC». Иначе прибавляем к строке «L»
Пример: 1986 после всего выдаст нам «MCML».
8. Выделяем остаток от 50.
9. Выделяем целое количество десятков и складываем к строке n раз символ «X». При этом учитываем что 40 пишется как 50-10, то есть «XL».
Пример: 1986 после всего выдаст нам «MCMLXXX».
10. Получаем остаток от деления на 10. Этот шаг отличается от других тем, что можно сразу приравнять остаток к его эквиваленту. 1=I, 7=VII и так далее.
После перебора числа этим алгоритмом мы получаем примерно такое:
2012 == MMXII
Ниже исходник на Java, реализующий алгоритм.
Как преобразовать целое число в римское число в PHP
Есть много вещей, о которых нужно подумать, когда вы пытаетесь преобразовать число в его римское представление, поэтому давайте подумаем об основах: меньшее число перед большим числом означает вычитание, а все остальное означает сложение. Например, IV означает 4, VI означает 6. Вы не должны ставить более одного меньшего числа перед большим числом, чтобы вычесть. Например, IIV не будет означать 3, поэтому вы должны разделить единицы, десятки, сотни и тысячи как отдельные элементы. Это означает, что 99 — это XCIX, 90 + 9, но никогда не должно записываться как IC. Аналогично, 999 не может быть IM, а 1999 не может быть MIM. Способ следовать этой логике в программировании (по крайней мере, в смысле числа к римскому) может быть легко понят, однако путь от римского числа к числовым значениям более сложен, поэтому объяснение здесь не будет упомянуто. статья (однако мы сделаем это с библиотекой).
В этой статье мы покажем вам, как преобразовать числовое значение в его римское представление и наоборот, если вы используете для него библиотеку.
А. Использование одной функции
Если вы не можете использовать библиотеку или просто хотите сохранить простоту, добавьте в свою коллекцию следующую функцию. Эта функция преобразует ваше число (первый аргумент) в его римское представление:
Заметка
Большинство алгоритмов работают только в диапазоне от 1 до 4999, поэтому при большом числе сценарий завершится ошибкой.
Просто включив эту функцию в свой проект, вы сможете использовать ее следующим образом:
И нам не нужно было включать библиотеку для такой функции.
Б. Использование библиотеки
Если вы хотите использовать библиотеку вместо написания своей собственной функции, мы рекомендуем вам использовать библиотеку римлян, очень простую библиотеку римских цифр PHP, которая позволяет преобразовывать целые числа в его римское представление и наоборот. Предпочтительным способом установки библиотеки является использование composer, поэтому вы можете запустить следующую команду
После установки библиотеки вы сможете использовать ее пространство имен и использовать функции, которые помогут вам преобразовать числа. Для получения дополнительной информации об этой библиотеке, пожалуйста, посетите официальный репозиторий на Github здесь.
Номер римскому
Чтобы преобразовать целое число в его римское представление, используйте IntToRoman класс, создайте экземпляр и вызовите метод фильтра из него. Этот метод ожидает в качестве первого аргумента число и возвращает строку с римским номером:
Роман на номер
Чтобы преобразовать римское число в его числовое представление, используйте RomanToInt класс, создайте экземпляр и вызовите метод фильтра из него. Этот метод ожидает в качестве первого аргумента строку с римским номером и возвращает целое число с числовым значением:
Римские цифры: от 1 до 50. Как перевести арабское число в римское и обратно
Доброго времени суток!
Вообще, обычно, в повседневной жизни мы используем арабские цифры (1, 2, 3 и т.д.). Они удобны, практичны, и уже давно как-то прижились 👀.
Но в определенных ситуациях, например, при обозначении веков, составлении каких-то документов, написании поэм или рассказов могут понадобиться римские цифры (I, II, III и т.д.).
Кстати, они имеют несколько интересных особенностей:
В этой заметке приведу несколько таблиц, которые помогут вам сориентироваться в этом не очень привычном исчислении.
Римские цифры
От 1 до 50
Арабские | Римские |
1 | I |
2 | II |
3 | III |
4 | IV |
5 | V |
6 | VI |
7 | VII |
8 | VIII |
9 | IX |
10 | X |
11 | XI |
12 | XII |
13 | XIII |
14 | XIV |
15 | XV |
16 | XVI |
17 | XVII |
18 | XVIII |
19 | XIX |
20 | XX |
21 | XXI |
22 | XXII |
23 | XXIII |
24 | XXIV |
25 | XXV |
26 | XXVI |
27 | XXVII |
28 | XXVIII |
29 | XXIX |
30 | XXX |
31 | XXXI |
32 | XXXII |
33 | XXXIII |
34 | XXXIV |
35 | XXXV |
36 | XXXVI |
37 | XXXVII |
38 | XXXVIII |
39 | XXXIX |
40 | XL |
41 | XLI |
42 | XLII |
43 | XLIII |
44 | XLIV |
45 | XLV |
46 | XLVI |
47 | XLVII |
48 | XLVIII |
49 | XLIX |
50 | L |
От 10 до 100, от 100 до 3000
Арабские | Римские |
10 | X |
20 | XX |
30 | XXX |
40 | XL |
50 | L |
60 | LX |
70 | LXX |
80 | LXXX |
90 | XC |
100 | C |
Арабские | Римские |
50 | L |
100 | C |
150 | CL |
200 | CC |
250 | CCL |
300 | CCC |
350 | CCCL |
400 | CD |
450 | CDL |
500 | D |
550 | DL |
600 | DC |
650 | DCL |
700 | DCC |
750 | DCCL |
800 | DCCC |
850 | DCCCL |
900 | CM |
950 | CML |
1000 | M |
Арабские | Римские |
100 | C |
200 | CC |
300 | CCC |
400 | CD |
500 | D |
600 | DC |
700 | DCC |
800 | DCCC |
900 | CM |
1000 | M |
1100 | MC |
1200 | MCC |
1300 | MCCC |
1400 | MCD |
1500 | MD |
1600 | MDC |
1700 | MDCC |
1800 | MDCCC |
1900 | MCM |
2000 | MM |
2100 | MMC |
2200 | MMCC |
2300 | MMCCC |
2400 | MMCD |
2500 | MMD |
2600 | MMDC |
2700 | MMDCC |
2800 | MMDCCC |
2900 | MMCM |
3000 | MMM |
Перевод арабского числа в римское (и наоборот)
Разумеется вручную переводить (считая тысячи, сотни, и десятки) арабские числа в римские — занятие то еще 👀 (и вряд ли кто-то этим занимается, кроме может быть каких-нибудь математиков или историков).
Поэтому для этих целей гораздо удобнее пользоваться программами, которые могут за вас все посчитать и конвертировать. Благо, что для расчетов ничего сложнее, чем Excel или Word ненужно (да и их если нет — можно воспользоваться аналогами, в том числе и онлайн-версиями).
Способ 1 (Excel)
1) Если у вас нет Excel — можно установить его бесплатный аналог (например, Libre Office) — https://ocomp.info/chem-zamenit-word-i-excel.html#LibreOffice
2) Кроме этого, можно воспользоваться Яндекс-диском: в его арсенале так же есть онлайн-версия Excel.
Яндекс-диск — создать таблицу
И так, будем считать, что Excel (или его аналог) у вас есть, и программа запущена — перед вами большой лист в клеточку. Теперь выберите первую ячейку A1, и в верхнюю строку с формулой напишите:
где 355 — число, которое вам нужно конвертировать в римское.
После нажмите Enter. Программа автоматически покажет вам в ячейке A1 римское число (см. пример на скрине ниже). Теперь можно скопировать его и вставить в любой другой документ/текст.
Libre Office (или Excel) — формула перевода в римское число
Если вам в последствии понадобиться другое число — просто поменяйте его в формуле (в скобках) и Excel тут же покажет вам новый результат.
Для обратного перевода используется другая формула:
где LXXX — римское число. Обратите внимание на кавычки — они обязательны, т.к. римские числа задаются текстом.
Формула перевода римского числа в арабское
Способ 2 (Word)
Я покажу свой пример на версии Office 2019 (в принципе, аналогично будет выполняться и в других современных версиях 2016, 2013).
Word — формат номеров страниц / Кликабельно
Далее укажите формат страниц в виде арабских чисел «1, 2, 3. » и выберите нумерацию страниц с того числа, которое вам нужно перевести в римское. В моем примере 3569.
После чего просто выберите новый формат нумерации «I, II, III» и ву-а-ля — арабское число преобразуется в римское. Осталось только скопировать его и вставить в нужный вам текст.
Способ актуален даже для достаточно больших чисел.
Меняем формат и готово!
Способ 3 (Word)
В Word есть еще один способ, как можно быстро перевести число в римское:
Римские цифры перевод и таблица
Так исторически сложилось, что способов записи цифр существует несколько. Из наиболее популярных можно отметить арабскую запись, которая и сейчас используется практически во всем мире, и римскую запись. Чаще всего римские цифры используют для записи веков.
Римская запись чисел с использованием римских цифр является непозиционной системой счисления.
На этой странице вы можете осуществить перевод римских цифр в арабские (русские) и наоборот арабское число в римское с помощью онлайн калькуляторов.
Римские цифры набираются на клавиатуре большими латинскими буквами — I, V, X, L, C, D, M.
Римские цифры в арабские
Арабские цифры в римские
Соответствие римских и арабскиц цифр
Римская цифра | Число |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
Таблица римские цифры от 1 до 20
Наиболее востребованными являются римские цифры от 1 до 20. Для вашего удобства сделали таблицу перевода.
Арабское число | Число римскими цифрами |
---|---|
1 | I |
2 | II |
3 | III |
4 | IV |
5 | V |
6 | VI |
7 | VII |
8 | VIII |
9 | IX |
10 | X |
11 | XI |
12 | XII |
13 | XIII |
14 | XIV |
15 | XV |
16 | XVI |
17 | XVII |
18 | XVIII |
19 | XIX |
20 | XX |
Века римскими цифрами
Чаще всего римские цифры используют для записи дат, а конкретнее дней, месяцев или веков. В таблице указаны значения римских цифр от 1 до 31, чтобы можно было быстро переводить арабскую запись числа в римскую.
Таблица веков римскими цифрами
Век | Век римскими цифрами |
---|---|
1 | I |
2 | II |
3 | III |
4 | IV |
5 | V |
6 | VI |
7 | VII |
8 | VIII |
9 | IX |
10 | X |
11 | XI |
12 | XII |
13 | XIII |
14 | XIV |
15 | XV |
16 | XVI |
17 | XVII |
18 | XVIII |
19 | XIX |
20 | XX |
21 | XXI |
22 | XXII |
23 | XXIII |
24 | XXIV |
25 | XXV |
26 | XXVI |
27 | XXVII |
28 | XXVIII |
29 | XXIX |
30 | XXX |
31 | XXXI |
Римские цифры до 100
Огромная таблица римских цифр от 1 до 100.
Число | Число римскими цифрами | Число | Число римскими цифрами | Число | Число римскими цифрами | Число | Число римскими цифрами | Число | Число римскими цифрами |
1 | I | 21 | XXI | 41 | XLI | 61 | LXI | 81 | LXXXI |
2 | II | 22 | XXII | 42 | XLII | 62 | LXII | 82 | LXXXII |
3 | III | 23 | XXIII | 43 | XLIII | 63 | LXIII | 83 | LXXXIII |
4 | IV | 24 | XXIV | 44 | XLIV | 64 | LXIV | 84 | LXXXIV |
5 | V | 25 | XXV | 45 | XLV | 65 | LXV | 85 | LXXXV |
6 | VI | 26 | XXVI | 46 | XLVI | 66 | LXVI | 86 | LXXXVI |
7 | VII | 27 | XXVII | 47 | XLVII | 67 | LXVII | 87 | LXXXVII |
8 | VIII | 28 | XXVIII | 48 | XLVIII | 68 | LXVIII | 88 | LXXXVIII |
9 | IX | 29 | XXIX | 49 | XLIX | 69 | LXIX | 89 | LXXXIX |
10 | X | 30 | XXX | 50 | L | 70 | LXX | 90 | XC |
11 | XI | 31 | XXXI | 51 | LI | 71 | LXXI | 91 | XCI |
12 | XII | 32 | XXXII | 52 | LII | 72 | LXXII | 92 | XCII |
13 | XIII | 33 | XXXIII | 53 | LIII | 73 | LXXIII | 93 | XCIII |
14 | XIV | 34 | XXXIV | 54 | LIV | 74 | LXXIV | 94 | XCIV |
15 | XV | 35 | XXXV | 55 | LV | 75 | LXXV | 95 | XCV |
16 | XVI | 36 | XXXVI | 56 | LVI | 76 | LXXVI | 96 | XCVI |
17 | XVII | 37 | XXXVII | 57 | LVII | 77 | LXXVII | 97 | XCVII |
18 | XVIII | 38 | XXXVIII | 58 | LVIII | 78 | LXXVIII | 98 | XCVIII |
19 | XIX | 39 | XXXIX | 59 | LIX | 79 | LXXIX | 99 | XCIX |
20 | XX | 40 | XL | 60 | LX | 80 | LXXX | 100 | C |
Римские цифры на клавиатуре
Довольно часто возникает проблема при наборе римских цифр. Например, для того, чтобы вводить римские цифры в Ворде (Word) их набирают на клавиатуре с помощью латинских букв как показано на рисунке. Соответственно:
Перевод числа в римскую цифру в Excel
Мало кто знает, но в Excel есть встроенная функция для перевода арабских чисел в римские цифры. Для того, чтобы сделать перевод введите в ячейке «=РИМСКОЕ(21)» (без кавычек) и нажмите Enter. Excel поместит в ячейку римское число — XXI.