Римские цифры
Ри́мские ци́фры — цифры, использовавшиеся древними римлянами в их непозиционной системе счисления.
| Системы счисления в культуре | |
|---|---|
| Индо-арабская | |
| Арабская Тамильская Бирманская | Тайская |
| Восточноазиатские | |
| Китайская Японская Сучжоу Корейская | Вьетнамская Счётные палочки |
| Алфавитные | |
| Абджадия Армянская Ариабхата Кириллическая Греческая | Грузинская Эфиопская Еврейская Акшара-санкхья |
| Другие | |
| Вавилонская Египетская Этрусская Римская Дунайская | Аттическая Кипу Майяская Эгейская Символы КППУ |
| Позиционные | |
| 2, 3, , 5, , 8, 10, 12, 16, 20, 60 | |
| Нега-позиционная | |
| Симметричная | |
| Смешанные системы | |
| Фибоначчиева | |
| Непозиционные | |
| Единичная (унарная) | |
| Эта страница или раздел содержит специальные символы Unicode. Если у вас отсутствуют необходимые шрифты, некоторые символы могут отображаться неправильно. |
Натуральные числа записываются при помощи повторения этих цифр. При этом, если бо́льшая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая стоит перед большей, то меньшая вычитается из большей (принцип вычитания). Последнее правило применяется только во избежание четырёхкратного повторения одной и той же цифры.
Римские цифры появились за 500 лет до нашей эры у этрусков[источник не указан 497 дней] (см. этрусский алфавит), которые могли заимствовать часть цифр у протокельтов[источник не указан 497 дней].
Цифры
Римские обозначения чисел известны ныне лучше, чем любая другая древняя система счисления. Объясняется это не столько какими-то особыми достоинствами римской системы, сколько тем огромным влиянием, которым пользовалась Римская империя в своё время. Этруски, завоевавшие Рим в VII веке до н. э., испытали на себе влияние восточно-средиземноморских культур. Этим отчасти объясняется сходство основных принципов римской и аттической систем счисления. Обе системы были десятичными[источник не указан 497 дней], хотя в обеих системах счисления особую роль играло число пять. Обе системы использовали при записи чисел повторяющиеся символы.
Старыми римскими символами для обозначения чисел 1, 5, 10, 100 и 1000 (индо-арабской записи) были, соответственно, символы I, V, X, Θ (или ⊕, или ⊗) и Φ (или ↀ , или CIƆ). Хотя о первоначальном значении этих символов было написано много, их удовлетворительного объяснения нет до сих пор. Согласно одной из распространённых теорий, римская цифра V изображает раскрытую руку с четырьмя прижатыми друг к другу пальцами и отставленным большим пальцем; символ X, согласно той же теории, изображает две скрещённые руки или сдвоенную цифру V. Символы чисел 100 и 1000, возможно, берут начало от греческих букв Θ и φ. Неизвестно, произошли ли более поздние обозначения C и M от старых римских символов или они акрофонически связаны с начальными буквами латинских слов, означавших 100 (центум) и 1000 (милле). Полагают, что римский символ числа 500, буква D, возник из половинки старого символа, обозначавшего 1000. Если не считать, что большинство римских символов, скорее всего, не были акрофоническими и что промежуточные символы для обозначения чисел 50 и 500 не были комбинациями символов чисел 5 и 10 или 5 и 100, то в остальном римская система счисления напоминала аттическую. Римляне часто использовали принцип вычитания, поэтому иногда вместо VIIII использовали IX, а вместо LXXXX — XC; сравнительно позднее — символ IV вместо IIII. Поэтому ныне все римские цифры можно записать заглавными латинскими буквами.
В целом римляне не были склонны заниматься математикой, поэтому не испытывали особой потребности в больших числах. Тем не менее, для обозначения 10 000 они эпизодически использовали символ CCIƆƆ, а для числа 100 000 — символ CCCIƆƆƆ. Половинки этих символов иногда использовались для обозначения чисел 5000 (IƆƆ) и 50000 (IƆƆƆ).
| 1 | I | unus, unum |
| 5 | V | quinque |
| 10 | X | decem |
| 50 | L | quinquaginta |
| 100 | C | centum |
| 500 | D | quingenti |
| 1000 | M | mille |
Дроби
Дробей римляне избегали так же упорно, как и больших чисел. В практических задачах, связанных с измерениями, они не использовали дроби, подразделяя единицу измерения обычно на 12 частей, с тем чтобы результат измерения представить в виде составного числа, суммы кратных различных единиц, как это делается сегодня, когда длину выражают в ярдах, футах и дюймах. Английские слова ounce («унция») и inch («дюйм») происходят от латинского слова uncia («унция»), обозначавшего одну двенадцатую основной единицы длины.
Символ 1/2 — буква S использовался в обозначениях номинала монет республиканского периода, однако позднее вышел из употребления. Унция (1/12) обозначалась точкой (·) или (на монетах) в виде маленького выпуклого полушария, иногда — горизонтальной чертой (-), а также (в скорописи) знаками и; обозначением ½ унции (семунции) служили знаки Σ, Є, £, сицилика — Ɔ, секстулы — 𐆓, скрупула — ℈. Однако на практике двенадцатиричные дроби чаще всего изображались сочетанием точек и символа S.
Запись чисел
| Арабская запись | Римская запись |
|---|---|
| 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 |
| 30 | XXX |
| 40 | XL |
| 50 | L |
| 60 | LX |
| 70 | LXX |
| 80 | LXXX |
| 90 | XC |
| 100 | C |
| 200 | CC |
| 300 | CCC |
| 400 | CD |
| 500 | D; IƆ |
| 600 | DC; IƆC |
| 700 | DCC; IƆCC |
| 800 | DCCC; IƆCCC |
| 900 | CM; CCIƆ |
| 1000 | M; ↀ; CIƆ |
| 2000 | MM; CIƆCIƆ |
| 3000 | MMM; CIƆCIƆCIƆ |
| 3999 | MMMCMXCIX; CIƆCIƆCIƆCCIƆXCIX |
| 4000 | MV; ↀↁ; CIƆIƆƆ |
| 5000 | V; ↁ; IƆƆ |
| 6000 | VM; ↁↀ; IƆƆCIƆ |
| 7000 | VMM; ↁↀↀ; IƆƆCIƆCIƆ |
| 8000 | VMMM; ↁↀↀↀ; IƆƆCIƆCIƆCIƆ |
| 9000 | MX; ↀↂ; CIƆCCIƆƆ |
| 10 000 | X; ↂ; CCIƆƆ |
| 20 000 | XX; ↂↂ; CCIƆƆCCIƆƆ |
| 30 000 | XXX; ↂↂↂ; CCIƆƆCCIƆƆCCIƆƆ |
| 40 000 | XL; ↂↇ; CCIƆƆIƆƆƆ |
| 50 000 | L; ↇ; IƆƆƆ |
| 60 000 | LX; ↇↂ; IƆƆƆCCIƆƆ |
| 70 000 | LXX; ↇↂↂ; IƆƆƆCCIƆƆCCIƆƆ |
| 80 000 | LXXX; ↇↂↂↂ; IƆƆƆCCIƆƆCCIƆƆCCIƆƆ |
| 90 000 | XC; ↂↈ; CCIƆƆCCCIƆƆƆ |
| 100 000 | C; ↈ; CCCIƆƆƆ |
| 200 000 | CC; ↈↈ; CCCIƆƆƆCCCIƆƆƆ |
| 300 000 | CCC; ↈↈↈ; CCCIƆƆƆCCCIƆƆƆCCCIƆƆƆ |
| 400 000 | CD; CCCIƆƆƆIƆƆƆƆ |
| 500 000 | D; IƆƆƆƆ |
| 600 000 | DC; IƆƆƆƆCCCIƆƆƆ |
| 700 000 | DCC; IƆƆƆƆCCCIƆƆƆCCCIƆƆƆ |
| 800 000 | DCCC |
| 900 000 | CM |
| 1 000 000 | M |
| 2 000 000 | MM |
| 3 000 000 | MMM |
| 4 000 000 | MV |
| 5 000 000 | V |
| 6 000 000 | VM |
| 7 000 000 | VMM |
| 8 000 000 | VMMM |
| 9 000 000 | MX |
| 10 000 000 | X |
| 100 000 000 | C |
| 1 000 000 000 | M |
| 1 000 000 000 000 | M |
| 1 000 000 000 000 000 000 000 000 000 000 000 | M |
| 10^100 | X^C |
Для правильной записи больших чисел римскими цифрами необходимо сначала записать число тысяч, затем сотен, затем десятков и, наконец, единиц.
В системе римских цифр отсутствует ноль, но ранее использовалось обозначение нуля как nulla («нет»), nihil («ничто») и N (первая буква этих слов).
При этом некоторые из цифр (I, X, C, M) могут повторяться, но не более трёх раз подряд; таким образом, с их помощью можно записать любое натуральное число не более 3999 (MMMCMXCIX). В ранние периоды существовали знаки для обозначения бо́льших цифр — 5000, 10 000, 50 000 и 100 000[источник не указан 5267 дней] (тогда максимальное число по упомянутому правилу равно 399 999). При записи чисел в римской системе счисления меньшая цифра может стоять справа от большей; в этом случае она прибавляется к ней. Например, число 283 по-римски записывается как CCLXXXIII, то есть 100+100+50+10+10+10+1+1+1=283. Здесь цифра, изображающая сотню, повторена два раза, а цифры, изображающие соответственно десяток и единицу, повторены по три раза.
Пример: число 1988. Одна тысяча M, девять сотен CM, восемь десятков LXXX, восемь единиц VIII. Запишем их вместе: MCMLXXXVIII.
Довольно часто, чтобы выделить числа в тексте, над ними рисовали черту: LXIV. Иногда черту рисовали и сверху, и снизу: XXXII — в частности, так принято выделять римские цифры в русском рукописном тексте (в типографском наборе это не используют из-за технической сложности). У других авторов черта сверху могла обозначать увеличение значения цифры в 1000 раз: V = 5000.

Повсеместно записывать число «четыре» как IV стали только в XIX веке, до этого наиболее часто употреблялась запись IIII. Однако запись IV можно встретить уже в документах манускрипта Forme of Cury, датируемых 1390 годом. На циферблатах часов в большинстве случаев традиционно используется IIII вместо IV, главным образом, по эстетическим соображениям, такое написание обеспечивает визуальную симметрию с цифрами VIII на противоположной стороне, а перевёрнутую IV прочесть труднее, чем IIII. Существует и версия, что IV на циферблате не писалось потому, что IV — первые буквы латинского имени бога Юпитера (IVPITER)[источник не указан 497 дней].
Меньшая цифра может быть записана и слева от большей, тогда её следует вычесть из большей. При этом вычитаться могут только цифры, обозначающие 1 или степени 10, а в качестве уменьшаемого выступать только ближайшие в числовом ряду к вычитаемой две цифры (то есть вычитаемое, умноженное на 5 или 10). Повторения меньшей цифры не допускаются. Таким образом, существует только шесть вариантов использования «правила вычитания»:
- IV = 4
- IX = 9
- XL = 40
- XC = 90
- CD = 400
- CM = 900
Например, число 94 будет XCIV = 100 − 10 + 5 − 1 = 94 — так называемое «правило вычитания» (появилось в эпоху поздней античности, а до этого римляне писали число 4 как IIII, а число 40 — как XXXX).
Другие способы «вычитания» недопустимы; так, число 99 должно быть записано как XCIX, но не как IC. Однако, в наши дни в некоторых случаях используется и упрощенная запись римских чисел, например, в программе Microsoft Excel при преобразовании арабских цифр в римские при помощи функции «РИМСКОЕ()» можно использовать несколько видов представления чисел, от классического до сильно упрощённого (так, число 499 может быть записано как CDXCIX, LDVLIV, XDIX, VDIV или ID). Упрощение состоит в том, что для уменьшения какой-либо цифры слева от неё может писаться любая другая цифра:
- 999. Тысяча (M), вычтем 1 (I), получим 999 (IM) вместо CMXCIX. Следствие: 1999 — MIM вместо MCMXCIX
- 95. Сто (C), вычтем 5 (V), получим 95 (VC) вместо XCV
- 1950: Тысяча (M), вычтем 50 (L), получим 950 (LM). Следствие: 1950 — MLM вместо MCML
Случаи такой записи чисел (как правило, годов) часто встречаются в титрах телесериалов США. Например, для года 1998 — MIIM вместо MCMXCVIII.
С помощью римских цифр можно записывать и бо́льшие классы чисел. Для этого над теми цифрами, которые обозначают тысячи, ставится черта, а над цифрами, которые обозначают миллионы, — двойная черта. Исключение составляет цифра I; вместо черты сверху записывается цифра M, а начиная с миллиона — по одной черте сверху. Например, число 123123 будет выглядеть так:
CXXIIICXXIII
А миллион как I, но только не с одной, а с двумя чертами во главе: I
Применение



В русском языке римские цифры используют в следующих случаях:
- Номер века или тысячелетия: XIX век, II тысячелетие до н. э.
- Спряжение глаголов.
- Маркировка циферблатов часов «под старину».
- Номер тома в многотомной книге или тома журналов (иногда — номера частей книги, разделов или глав).
- Тронный номер монарха с одинаковым именем: Пётр I, Елизавета II, Александр III.
- Группа крови на нашивках формы военнослужащих ВС РФ.
- На советских судах обозначали осадку в метрах римскими буквами (на английских кораблях — в футах римскими буквами).
- В некоторых изданиях — номера листов с предисловием к книге, чтобы не исправлять ссылки внутри основного текста при изменении предисловия.
- Порядковые номера важных исторических событий или пунктов списка, например: V постулат Евклида, II мировая война, XX съезд КПСС, Игры XXII Олимпиады и тому подобное.
- Валентность химических элементов, например: оксид серы (IV), хлорид меди (II).
- Номер корпуса в вооружённых силах.
- Иногда год окончания постройки здания на его фронтоне.
- Порядковый номер ступени в звукоряде.
- В математическом анализе римскими цифрами записывают номер производной, правда, при чтении (обычно) произносят «штрих» вместо I, «два штриха» вместо II, «три штриха» вместо III. Наконец, начиная с IV читают «четвёртая производная»:
и
.
Римские цифры широко употребляли в Европе и СССР при указании даты для обозначения месяца года, например, 11/III-85 или 9.XI.89, это можно увидеть на многих архивных документах тех времён. Подобным образом, через косую черту, в том числе записывали дату урока в классных журналах, например, 24/II. Для указания дат рождения и смерти на надгробиях часто использовали особый формат, где месяц года также обозначали римскими цифрами, например, (25 ноября 1887 ~ 26 января 1943). Подобный формат в 1970—1980-х годах использовали в медицинских справках.
С переходом на компьютерную обработку информации форматы даты, основанные на римских цифрах, практически вышли из употребления.
В других языках сфера применения римских цифр может иметь особенности. В западных странах римскими цифрами нередко записывают номер года, например, на фронтонах зданий и в титрах видео-, кино- и телепродукции.
В современной Литве на дорожных знаках, на витринах магазинов, на вывесках предприятий римскими цифрами могут обозначать дни недели.
Юникод
Стандарт Юникода рекомендует использовать для представления римских цифр обычные латинские буквы. Тем не менее стандарт включает также специальные символы для римских цифр как часть Числовых форм в области знаков с кодами с U+2160 по U+2188. Например, MCMLXXXVIII может быть представлено в форме ⅯⅭⅯⅬⅩⅩⅩⅧ. Этот диапазон включает как строчные, так и прописные цифры для записи чисел от 1 (Ⅰ) до 12 (Ⅻ), в том числе и комбинированные глифы для составных чисел, таких как 8 (Ⅷ), главным образом для обеспечения совместимости с восточноазиатскими наборами символов в таких промышленных стандартах, как , где эти символы определены. Комбинированные глифы используются для представления чисел, которые ранее составлялись из отдельных символов (например, Ⅻ вместо его представления как X и I I). В дополнение к этому, глифы существуют для архаичных форм записи чисел 1000, 5000, 10 000, большой обратной C (Ɔ), поздней формы записи 6 (ↅ, похожей на греческую стигму: Ϛ), ранней формы записи числа 50 (ↆ, похожей на стрелку, указывающую вниз ↓⫝⊥), 50 000, и 100 000. Маленькая обратная c, ↄ не включена в символы римских цифр, но включена в стандарт Юникод как прописная клавдиева буква Ↄ.
| Значение | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Символ | U+2160 Ⅰ | U+2161 Ⅱ | U+2162 Ⅲ | U+2163 Ⅳ | U+2164 Ⅴ | U+2165 Ⅵ | U+2166 Ⅶ | U+2167 Ⅷ |
| U+2170 ⅰ | U+2171 ⅱ | U+2172 ⅲ | U+2173 ⅳ | U+2174 ⅴ | U+2175 ⅵ | U+2176 ⅶ | U+2177 ⅷ | |
| Значение | 9 | 10 | 11 | 12 | 50 | 100 | 500 | 1000 |
| Символ | U+2168 Ⅸ | U+2169 Ⅹ | U+216A Ⅺ | U+216B Ⅻ | U+216C Ⅼ | U+216D Ⅽ | U+216E Ⅾ | U+216F Ⅿ |
| U+2178 ⅸ | U+2179 ⅹ | U+217A ⅺ | U+217B ⅻ | U+217C ⅼ | U+217D ⅽ | U+217E ⅾ | U+217F ⅿ | |
| Значение | 1000 | 5000 | 10 000 | 100 | 6 | 50 | 50 000 | 100 000 |
| Символ | U+2180 ↀ | U+2181 ↁ | U+2182 ↂ | U+2183 Ↄ | U+2185 ↅ | U+2186 ↆ | U+2187 ↇ | U+2188 ↈ |
Отображение всех этих символов требует наличия программного обеспечения, поддерживающего стандарт Юникод, и шрифта, содержащего соответствующие этим символам глифы (например, шрифт Universalia).
Машинопись

На пишущей машинке с русским шрифтом для написания отсутствующих латинских знаков используются визуально похожие русские буквы (например, П для II, Ш для III, У для V) и арабская цифра 1, имеющая в машинописном шрифте написание I. Для L и D допускается использование Л и Д.
| Число | I | II | III | IV | V | VI | VII | VIII | IX | X | L | C | D | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Машинопись | 1 | П | Ш | 1У | У | У1 | УП | УШ | 1Х | Х | Л | С | Д | М |
Регулярные выражения
Регулярное выражение для проверки римских цифр — ^(M{0,3})(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$ В языке Perl для поиска римских цифр в строке можно использовать регулярное выражение m/\b((?:M{0,3}?(?:D?C{0,3}|C[DM])?(?:L?X{0,3}|X[LC])?(?:I{0,3}?V?I{0,3}|I[VX])))\b/gs.
Преобразование
Для преобразования чисел, записанных арабскими цифрами, в римские используются специальные функции.
Например, в английской версии Microsoft Excel и в любой версии OpenOffice.org Calc для этого существует функция ROMAN (аргумент; форма), в русской версии Microsoft Excel эта функция называется РИМСКОЕ(число; форма). Необязательный аргумент «форма» может принимать значения от 0 до 4, а также «ложь» и «истина». Отсутствие аргумента «форма» или равенство его 0 или «истина» даёт «классическую» (строгую) форму преобразования; значение 4 или «ложь» даёт наиболее упрощённую; значения 1, 2, 3 дают промежуточные по строгости-упрощению варианты. Различия проявляются, например, на числах 45, 49, 495, 499 (указаны первые в диапазоне [1;3999]).
| форма | 0 | 1 | 2 | 3 | 4 | |
| число | ||||||
| 45 | XLV | VL | VL | VL | VL | |
| 49 | XLIX | VLIV | IL | IL | IL | |
| 495 | CDXCV | LDVL | XDV | VD | VD | |
| 499 | CDXCIX | LDVLIV | XDIX | VDIV | ID |
Для нецелых значений аргумента «число» производится округление вниз до целого; если после этого значение оказывается больше 3999 или меньше 0, то функция возвращает «#Знач»; для значения 0 возвращается пустая ячейка.
var arab = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]; var roman = ['I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M']; function arabToRoman(number) { if(!number) return ''; var ret = ''; var i = arab.length - 1; while(number > 0) { if(number >= arab[i]) { ret += roman[i]; number -= arab[i]; } else { i--; } } return ret; } function romanToArab(str) { str = str.toUpperCase(); var ret = 0; var i = arab.length - 1; var pos = 0; while(i >= 0 && pos < str.length ) { if(str.substr(pos, roman[i].length) == roman[i]) { ret += arab[i]; pos += roman[i].length; } else { i--; } } return ret; } #include <string.h> const int arabar[] = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000}; const char *romanar[] = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"}; char *arab2roman(unsigned short int arab) { static char roman[80]; const int m = sizeof(arabar)/sizeof(int)-1, arabmax=arabar[m]; const char romanmax=romanar[m][0]; int i, n; if(!arab) { *roman=0; return roman; } i=0; while(arab>arabmax) { roman[i++] = romanmax; arab -= arabmax; } n=m; while(arab > 0) { if(arab >= arabar[n]) { roman[i++] = romanar[n][0]; if(n&1) roman[i++] = romanar[n][1]; arab -= arabar[n]; } else n--; } roman[i]=0; return roman; } unsigned short int roman2arab(char *roman) { const int m = sizeof(arabar)/sizeof(int)-1; unsigned short int arab; int len, n, i, pir; len=strlen(roman); arab=0; n=m; i=0; while(n >= 0 && i < len) { pir=n&1; if(roman[i] == romanar[n][0] && (!pir || roman[i+1] == romanar[n][1])) { arab += arabar[n]; i += 1+pir; } else n--; } return arab; } val arabar = Array(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000) val romanar = Array("I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M") def arab2roman(arab: Int, acc: String = "", n: Int = arabar.length - 1): String = if (arab == 0) acc else if (arab >= arabar(n)) arab2roman(arab - arabar(n), acc + romanar(n), n) else arab2roman(arab, acc, n-1) // arab2roman(4933) = MMMMCMXXXIII type str2 = string[2]; const Rims : array[1..14] of str2 = ('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I',' '); Arab : array[1..14] of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0); var N, NI, I, J : integer; S : string; function Arab2Rim(N : integer) : string; var S : string; I : integer; begin S := ''; I:=1; while N > 0 do begin while Arab[I]<=N do begin S := S + Rims[I]; N := N - Arab[I] end; I:=I+1 end; Arab2Rim := S end; function Rim2Arab (S:string) : integer; var I, N : integer; begin I:=1; N := 0; while S<>'' do begin while Rims[I] = Copy(S, 1, Length(Rims[I]) ) do begin S := Copy( S, 1+Length(Rims[I]), 255); N := N + Arab[I] end; I:=I+1 end; Rim2Arab := N end; begin WriteLn('Перевод из арабских цифр в римские. 1999 B_SA'); { Write('Введите число для преобразования:'); ReadLn(N);} for NI := 26 to 46 do WriteLn(NI,' = ',Arab2Rim(NI),' обратно ', Rim2Arab( Arab2Rim(NI) )); end. function Arab2Roman(arab:integer):string; var i:integer; d:integer; arab_str:string; arab_len:integer; begin Result := ''; arab_str := IntToStr(arab); arab_len := Length(arab_str); for i := 0 to arab_len-1 do begin d := StrToInt(String(arab_str[arab_len-i])); if (d+1) mod 5 = 0 then Result := Copy('IXCM', 1+i, 1) + Copy('VXLCDM', i*2 + (d+1) div 5, 1) + Result else Result := Copy('VLD', 1+i, d div 5) + Copy('IIIXXXCCCMMM', 1+i*3, (d mod 5)) + Result; end; end; 10 INPUT "АРАБСКОЕ ЧИСЛО: "; А$ 20 FOR I=0 TO LEN(A$)-1 30 X=VAL(MID$(A$,LEN(A$)-I,1)) 40 IF X=4 OR X=9 THEN B$=MID$("IXCM",I+1,1)+MID$("VXLCDM",I*2+(X+1)/5,1)+B$ 50 IF X<4 THEN B$=MID$("IIIXXXCCCMMM",1+I*3,X)+B$ ELSE IF X>4 AND X<9 THEN B$=MID$("VLD",I+1,1)+MID$("IIIXXXCCCMMM",1+I*3,X-5)+B$ 60 NEXT I 70 PRINT "РИМСКОЕ ЧИСЛО: "; B$ string-join( for $num in (1999) return ( ('','M','MM','MMM')[($num idiv 1000) mod 10+1], ('','C','CC','CCC','CD','D','DC','DCC','DCCC','CM')[($num idiv 100) mod 10+1], ('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC')[($num idiv 10) mod 10+1], ('','I','II','III','IV','V','VI','VII','VIII','IX')[$num mod 10+1] ), '') use strict; use warnings; my $n = 1999; my $nums = [ ['', qw(I II III IV V VI VII VIII IX) ], ['', qw(X XX XXX XL L LX LXX LXXX XC) ], ['', qw(C CC CCC CD D DC DCC DCCC CM) ], ['', qw(M MM MMM) ] ]; my $i = 0; my @res = (); push @res, ($nums->[$i++][ ($n % 10, $n = int($n / 10))[0] ]) for 0 .. 3; print reverse @res; import java.util.*; public class IntegerConverter { public static String intToRoman(int number) { if (number >= 4000 || number <= 0) return null; StringBuilder result = new StringBuilder(); for(Integer key : units.descendingKeySet()) { while (number >= key) { number -= key; result.append(units.get(key)); } } return result.toString(); } private static final NavigableMap<Integer, String> units; static { NavigableMap<Integer, String> initMap = new TreeMap<>(); initMap.put(1000, "M"); initMap.put(900, "CM"); initMap.put(500, "D"); initMap.put(400, "CD"); initMap.put(100, "C"); initMap.put(90, "XC"); initMap.put(50, "L"); initMap.put(40, "XL"); initMap.put(10, "X"); initMap.put(9, "IX"); initMap.put(5, "V"); initMap.put(4, "IV"); initMap.put(1, "I"); units = Collections.unmodifiableNavigableMap(initMap); } } /// <summary> /// Класс предназначен для преобразований арабских чисел в римские и обратно /// </summary> /// <remarks> /// <para>Класс изначально содержит алфавит римских чисел, способных определять арабские числа от 1 до 39999</para> /// <para>Если необходимо расширить диапазон, то можно определить дополнительные обозначения для римских чисел, используя /// поле <see cref="БазовыеРимскиеЧисла"/>БазовыеРимскиеЧисла</remarks> public static class РимскоеЧисло { /// <summary> /// Алфавит базовых римских чисел /// <para>Алфавит построен в виде словаря. Ключом словаря является арабское число (int), значением - соответствующее ему /// римское число (string)</para> /// </summary> /// <remarks> /// <para>Содержит римское обозначения арабских чисел 1*,4*,5*,9* - где "*"представляет собой 0...N нулей</para> /// <para>При создании содержит в себе обозначение чисел от 1 до 10000 (I...ↂ) Так как в римском числе один символ не может /// встречаться более трех раз, то изначально можно преобразовать в римский формат числа от 1 до 39999.</para> /// <para>Если Вы хотите иметь возможность работать с большим количеством римских чисел, то вы должны добавить в список /// дополнительные обозначения начиная с 40000 не пропуская элементы 1*,4*,5*,9*.</para> /// </remarks> public static SortedList<int, string> БазовыеРимскиеЧисла { get; set; } static РимскоеЧисло() { БазовыеРимскиеЧисла = new SortedList<int, string>(17); БазовыеРимскиеЧисла.Add(1, "I"); БазовыеРимскиеЧисла.Add(4, "IV"); БазовыеРимскиеЧисла.Add(5, "V"); БазовыеРимскиеЧисла.Add(9, "IX"); БазовыеРимскиеЧисла.Add(10, "X"); БазовыеРимскиеЧисла.Add(40, "XL"); БазовыеРимскиеЧисла.Add(50, "L"); БазовыеРимскиеЧисла.Add(90, "XC"); БазовыеРимскиеЧисла.Add(100, "C"); БазовыеРимскиеЧисла.Add(400, "CD"); БазовыеРимскиеЧисла.Add(500, "D"); БазовыеРимскиеЧисла.Add(900, "CM"); БазовыеРимскиеЧисла.Add(1000, "M"); БазовыеРимскиеЧисла.Add(4000, "Mↁ"); БазовыеРимскиеЧисла.Add(5000, "ↁ"); БазовыеРимскиеЧисла.Add(9000, "Mↂ"); БазовыеРимскиеЧисла.Add(10000, "ↂ"); } /// <summary> /// Рассчитывает максимально возможное римское число для текущего алфавита римских чисел. /// </summary> /// <returns>Максимально возможное римское число</returns> public static uint МаксимальноеРимскоеЧисло() { int последнееЧисло = БазовыеРимскиеЧисла.Keys.Last(); int числоБезНулей = int.Parse(последнееЧисло.ToString().Replace('0','\0')); int предварительное=0; switch (числоБезНулей) { case 1: предварительное = последнееЧисло * 4 - 1; break; case 4: case 9: предварительное = последнееЧисло; break; case 5: предварительное = последнееЧисло + последнееЧисло / 5 * 3; break; default: break; } return uint.Parse(предварительное.ToString().Replace('0', '9'));; } /// <summary> /// Конвентирует целое число в римское число /// </summary> /// <param name="числоАраб">Арабское число, которое необходимо преобразовать в римскую запись</param> /// <exception cref="ArgumentOutOfRangeException">Генерируется когда в качестве параметра передано число равное "0" /// или число большее чем максимальная римское число.</exception> /// <returns>Строку, представляющую собой римской число</returns> public static string АрабскоеВРимское(this int числоАраб) { StringBuilder числоРимское = new StringBuilder(); //Исключаем знак "-" из арабского числа и делаем его первым символом римского числа if (числоАраб < 0) { числоРимское.Append("-"); числоАраб = -числоАраб; } if (числоАраб == 0) throw new ArgumentOutOfRangeException("числоАраб", числоАраб, "Недопустимое значение аргумента: римские числа не могут быть равными\"0\""); else if (числоАраб > МаксимальноеРимскоеЧисло()) throw new ArgumentOutOfRangeException("числоАраб", числоАраб, string.Format("Недопустимое значение аргумента: невозможно задать римское число большее чем {0}", МаксимальноеРимскоеЧисло())); //Раскладываем арабское число на составляющие его римские числа и объединяем их в одну строку var необходимыеБазовыеРимскиеЧисла = from к in БазовыеРимскиеЧисла.Keys where к <= числоАраб orderby к descending select к; foreach (int тек in необходимыеБазовыеРимскиеЧисла) { while ((числоАраб / тек) >= 1) { числоАраб -= тек; числоРимское.Append(БазовыеРимскиеЧисла[тек]); } } return числоРимское.ToString(); } /// <summary> /// Конвентирует римское число в арабское /// </summary> /// <param name="числоРимское">Римское число, которое необходимо преобразовать в тип int</param> /// <exception cref="FormatException">Генерируется когда в качестве параметра передано число не являющееся римским</exception> /// <returns>Целое число, представляющее собой арабскую запись римского числа</returns> public static int РимскоеВАрабское(this string числоРимское) { int числоАраб = 0; sbyte отрицательное = 1; string рим = числоРимское.Trim(); if (рим[0] == '-') { отрицательное = -1; рим = рим.Substring(1); } StringBuilder шаблонРимскогоНомера = new StringBuilder(); foreach (int к in БазовыеРимскиеЧисла.Keys) { int индекс = БазовыеРимскиеЧисла.Keys.IndexOf(к); string квантификатор="?"; if (индекс == 0 || (индекс % 4) == 0) квантификатор="{0,3}"; шаблонРимскогоНомера.Insert(0, string.Format("(?<{0}>({1}){2})?", к.ToString(), БазовыеРимскиеЧисла[к], квантификатор)); } //Игнорировать регистр + соответствие должно начинаться с начала строки шаблонРимскогоНомера.Insert(0, "(?i)^"); //Соответствие должно обнаруживаться в конце строки шаблонРимскогоНомера.Append("$"); //Упрощенная проверка. Не проверяет таких ошибок как IVII if (!Regex.IsMatch(рим, шаблонРимскогоНомера.ToString())) throw new FormatException(string.Format("Текст \"{0}\" не является римским числом",числоРимское)); Match число = Regex.Match(рим, шаблонРимскогоНомера.ToString()); foreach (int к in БазовыеРимскиеЧисла.Keys) { числоАраб += число.Groups[к.ToString()].Length / БазовыеРимскиеЧисла[к].Length * к; } return числоАраб * отрицательное; } } Примечания
Комментарии
- Автор - Кузнецов Евгений А.
- Автор - Кузнецов Евгений А., 1992 год
Источники
- Цифры и системы счисления Архивная копия от 22 ноября 2018 на Wayback Machine. Онлайн Энциклопедия Кругосвет.
- М. Я. Выгодский «Справочник по элементарной математике» Москва 1958 г. Государственное издательство физико-математической литературы. стр.62
- Beckham’s road to Roman Архивная копия от 1 мая 2020 на Wayback Machine // Би-би-си, 17 April, 2002
- Unicode Standard, 15.3 Архивная копия от 27 июня 2010 на Wayback Machine («For most purposes, it is preferable to compose the Roman numerals from sequences of the appropriate Latin letters.»)
- Unicode Number Forms. Дата обращения: 30 марта 2009. Архивировано 25 марта 2009 года.
- Perry, David J. Proposal to Add Additional Ancient Roman Characters to UCS Архивная копия от 22 июня 2011 на Wayback Machine.
- Березин, Борис Иванович. Школа машинописи. — М.: Легкая и пищевая промышленность, 1984. — С. 85. — 168 с.
- Озеран, Антонина Евгеньевна. Машинопись. — Минск: Вышэйшая школа, 1971. — С. 98. — 225 с. — ISBN 978-5-458-48020-8. Архивировано 25 мая 2023 года.
- Глава 31. Римская числовая нотация :: Идеи реализации. Дата обращения: 15 октября 2015. Архивировано 18 ноября 2015 года.
- "Наука и жизнь" N12 1986 стр.95, В.Птицын, г.Москва
См. также
- Арабские цифры
- Символы древнеримских денежных и весовых единиц
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Римские цифры, Что такое Римские цифры? Что означает Римские цифры?
U etogo termina sushestvuyut i drugie znacheniya sm Cifra znacheniya Ri mskie ci fry cifry ispolzovavshiesya drevnimi rimlyanami v ih nepozicionnoj sisteme schisleniya Sistemy schisleniya v kultureIndo arabskayaArabskaya Tamilskaya Birmanskaya TajskayaVostochnoaziatskieKitajskaya Yaponskaya Suchzhou Korejskaya Vetnamskaya Schyotnye palochkiAlfavitnyeAbdzhadiya Armyanskaya Ariabhata Kirillicheskaya Grecheskaya Gruzinskaya Efiopskaya Evrejskaya Akshara sankhyaDrugieVavilonskaya Egipetskaya Etrusskaya Rimskaya Dunajskaya Atticheskaya Kipu Majyaskaya Egejskaya Simvoly KPPUPozicionnye2 3 5 8 10 12 16 20 60Nega pozicionnayaSimmetrichnayaSmeshannye sistemyFibonachchievaNepozicionnyeEdinichnaya unarnaya Eta stranica ili razdel soderzhit specialnye simvoly Unicode Esli u vas otsutstvuyut neobhodimye shrifty nekotorye simvoly mogut otobrazhatsya nepravilno Naturalnye chisla zapisyvayutsya pri pomoshi povtoreniya etih cifr Pri etom esli bo lshaya cifra stoit pered menshej to oni skladyvayutsya princip slozheniya esli zhe menshaya stoit pered bolshej to menshaya vychitaetsya iz bolshej princip vychitaniya Poslednee pravilo primenyaetsya tolko vo izbezhanie chetyryohkratnogo povtoreniya odnoj i toj zhe cifry Rimskie cifry poyavilis za 500 let do nashej ery u etruskov istochnik ne ukazan 497 dnej sm etrusskij alfavit kotorye mogli zaimstvovat chast cifr u protokeltov istochnik ne ukazan 497 dnej CifryRimskie oboznacheniya chisel izvestny nyne luchshe chem lyubaya drugaya drevnyaya sistema schisleniya Obyasnyaetsya eto ne stolko kakimi to osobymi dostoinstvami rimskoj sistemy skolko tem ogromnym vliyaniem kotorym polzovalas Rimskaya imperiya v svoyo vremya Etruski zavoevavshie Rim v VII veke do n e ispytali na sebe vliyanie vostochno sredizemnomorskih kultur Etim otchasti obyasnyaetsya shodstvo osnovnyh principov rimskoj i atticheskoj sistem schisleniya Obe sistemy byli desyatichnymi istochnik ne ukazan 497 dnej hotya v obeih sistemah schisleniya osobuyu rol igralo chislo pyat Obe sistemy ispolzovali pri zapisi chisel povtoryayushiesya simvoly Starymi rimskimi simvolami dlya oboznacheniya chisel 1 5 10 100 i 1000 indo arabskoj zapisi byli sootvetstvenno simvoly I V X 8 ili ili i F ili ili CIƆ Hotya o pervonachalnom znachenii etih simvolov bylo napisano mnogo ih udovletvoritelnogo obyasneniya net do sih por Soglasno odnoj iz rasprostranyonnyh teorij rimskaya cifra V izobrazhaet raskrytuyu ruku s chetyrmya prizhatymi drug k drugu palcami i otstavlennym bolshim palcem simvol X soglasno toj zhe teorii izobrazhaet dve skreshyonnye ruki ili sdvoennuyu cifru V Simvoly chisel 100 i 1000 vozmozhno berut nachalo ot grecheskih bukv 8 i f Neizvestno proizoshli li bolee pozdnie oboznacheniya C i M ot staryh rimskih simvolov ili oni akrofonicheski svyazany s nachalnymi bukvami latinskih slov oznachavshih 100 centum i 1000 mille Polagayut chto rimskij simvol chisla 500 bukva D voznik iz polovinki starogo simvola oboznachavshego 1000 Esli ne schitat chto bolshinstvo rimskih simvolov skoree vsego ne byli akrofonicheskimi i chto promezhutochnye simvoly dlya oboznacheniya chisel 50 i 500 ne byli kombinaciyami simvolov chisel 5 i 10 ili 5 i 100 to v ostalnom rimskaya sistema schisleniya napominala atticheskuyu Rimlyane chasto ispolzovali princip vychitaniya poetomu inogda vmesto VIIII ispolzovali IX a vmesto LXXXX XC sravnitelno pozdnee simvol IV vmesto IIII Poetomu nyne vse rimskie cifry mozhno zapisat zaglavnymi latinskimi bukvami V celom rimlyane ne byli sklonny zanimatsya matematikoj poetomu ne ispytyvali osoboj potrebnosti v bolshih chislah Tem ne menee dlya oboznacheniya 10 000 oni epizodicheski ispolzovali simvol CCIƆƆ a dlya chisla 100 000 simvol CCCIƆƆƆ Polovinki etih simvolov inogda ispolzovalis dlya oboznacheniya chisel 5000 IƆƆ i 50000 IƆƆƆ Nastennye bashennye chasy v Venecii s napisaniem chisel VIIII dlya oboznacheniya devyatogo chasa i IIII dlya oboznacheniya chetvyortogo chasa1 I unus unum5 V quinque10 X decem50 L quinquaginta100 C centum500 D quingenti1000 M milleDrobiDrobej rimlyane izbegali tak zhe uporno kak i bolshih chisel V prakticheskih zadachah svyazannyh s izmereniyami oni ne ispolzovali drobi podrazdelyaya edinicu izmereniya obychno na 12 chastej s tem chtoby rezultat izmereniya predstavit v vide sostavnogo chisla summy kratnyh razlichnyh edinic kak eto delaetsya segodnya kogda dlinu vyrazhayut v yardah futah i dyujmah Anglijskie slova ounce unciya i inch dyujm proishodyat ot latinskogo slova uncia unciya oboznachavshego odnu dvenadcatuyu osnovnoj edinicy dliny Simvol 1 2 bukva S ispolzovalsya v oboznacheniyah nominala monet respublikanskogo perioda odnako pozdnee vyshel iz upotrebleniya Unciya 1 12 oboznachalas tochkoj ili na monetah v vide malenkogo vypuklogo polushariya inogda gorizontalnoj chertoj a takzhe v skoropisi znakami i oboznacheniem uncii semuncii sluzhili znaki S Ye sicilika Ɔ sekstuly skrupula Odnako na praktike dvenadcatirichnye drobi chashe vsego izobrazhalis sochetaniem tochek i simvola S Zapis chiselArabskaya zapis Rimskaya zapis1 I2 II3 III4 IV5 V6 VI7 VII8 VIII9 IX10 X11 XI12 XII13 XIII14 XIV15 XV16 XVI17 XVII18 XVIII19 XIX20 XX21 XXI22 XXII23 XXIII30 XXX40 XL50 L60 LX70 LXX80 LXXX90 XC100 C200 CC300 CCC400 CD500 D IƆ600 DC IƆC700 DCC IƆCC800 DCCC IƆCCC900 CM CCIƆ1000 M CIƆ2000 MM CIƆCIƆ3000 MMM CIƆCIƆCIƆ3999 MMMCMXCIX CIƆCIƆCIƆCCIƆXCIX4000 MV CIƆIƆƆ5000 V IƆƆ6000 V M IƆƆCIƆ7000 V MM IƆƆCIƆCIƆ8000 V MMM IƆƆCIƆCIƆCIƆ9000 MX CIƆCCIƆƆ10 000 X CCIƆƆ20 000 XX CCIƆƆCCIƆƆ30 000 XXX CCIƆƆCCIƆƆCCIƆƆ40 000 XL CCIƆƆIƆƆƆ50 000 L IƆƆƆ60 000 LX IƆƆƆCCIƆƆ70 000 LXX IƆƆƆCCIƆƆCCIƆƆ80 000 LXXX IƆƆƆCCIƆƆCCIƆƆCCIƆƆ90 000 XC CCIƆƆCCCIƆƆƆ100 000 C CCCIƆƆƆ200 000 CC CCCIƆƆƆCCCIƆƆƆ300 000 CCC CCCIƆƆƆCCCIƆƆƆCCCIƆƆƆ400 000 CD CCCIƆƆƆIƆƆƆƆ500 000 D IƆƆƆƆ600 000 DC IƆƆƆƆCCCIƆƆƆ700 000 DCC IƆƆƆƆCCCIƆƆƆCCCIƆƆƆ800 000 DCCC900 000 CM1 000 000 M2 000 000 MM3 000 000 MMM4 000 000 M V5 000 000 V6 000 000 V M7 000 000 V MM8 000 000 V MMM9 000 000 M X10 000 000 X100 000 000 C1 000 000 000 M1 000 000 000 000 M1 000 000 000 000 000 000 000 000 000 000 000 M10 100 X C Dlya pravilnoj zapisi bolshih chisel rimskimi ciframi neobhodimo snachala zapisat chislo tysyach zatem soten zatem desyatkov i nakonec edinic V sisteme rimskih cifr otsutstvuet nol no ranee ispolzovalos oboznachenie nulya kak nulla net nihil nichto i N pervaya bukva etih slov Pri etom nekotorye iz cifr I X C M mogut povtoryatsya no ne bolee tryoh raz podryad takim obrazom s ih pomoshyu mozhno zapisat lyuboe naturalnoe chislo ne bolee 3999 MMMCMXCIX V rannie periody sushestvovali znaki dlya oboznacheniya bo lshih cifr 5000 10 000 50 000 i 100 000 istochnik ne ukazan 5267 dnej togda maksimalnoe chislo po upomyanutomu pravilu ravno 399 999 Pri zapisi chisel v rimskoj sisteme schisleniya menshaya cifra mozhet stoyat sprava ot bolshej v etom sluchae ona pribavlyaetsya k nej Naprimer chislo 283 po rimski zapisyvaetsya kak CCLXXXIII to est 100 100 50 10 10 10 1 1 1 283 Zdes cifra izobrazhayushaya sotnyu povtorena dva raza a cifry izobrazhayushie sootvetstvenno desyatok i edinicu povtoreny po tri raza Primer chislo 1988 Odna tysyacha M devyat soten CM vosem desyatkov LXXX vosem edinic VIII Zapishem ih vmeste MCMLXXXVIII Dovolno chasto chtoby vydelit chisla v tekste nad nimi risovali chertu LXIV Inogda chertu risovali i sverhu i snizu XXXII v chastnosti tak prinyato vydelyat rimskie cifry v russkom rukopisnom tekste v tipografskom nabore eto ne ispolzuyut iz za tehnicheskoj slozhnosti U drugih avtorov cherta sverhu mogla oboznachat uvelichenie znacheniya cifry v 1000 raz V 5000 Chasy marki Tissot s tradicionnym napisaniem IIII Povsemestno zapisyvat chislo chetyre kak IV stali tolko v XIX veke do etogo naibolee chasto upotreblyalas zapis IIII Odnako zapis IV mozhno vstretit uzhe v dokumentah manuskripta Forme of Cury datiruemyh 1390 godom Na ciferblatah chasov v bolshinstve sluchaev tradicionno ispolzuetsya IIII vmesto IV glavnym obrazom po esteticheskim soobrazheniyam takoe napisanie obespechivaet vizualnuyu simmetriyu s ciframi VIII na protivopolozhnoj storone a perevyornutuyu IV prochest trudnee chem IIII Sushestvuet i versiya chto IV na ciferblate ne pisalos potomu chto IV pervye bukvy latinskogo imeni boga Yupitera IVPITER istochnik ne ukazan 497 dnej Menshaya cifra mozhet byt zapisana i sleva ot bolshej togda eyo sleduet vychest iz bolshej Pri etom vychitatsya mogut tolko cifry oboznachayushie 1 ili stepeni 10 a v kachestve umenshaemogo vystupat tolko blizhajshie v chislovom ryadu k vychitaemoj dve cifry to est vychitaemoe umnozhennoe na 5 ili 10 Povtoreniya menshej cifry ne dopuskayutsya Takim obrazom sushestvuet tolko shest variantov ispolzovaniya pravila vychitaniya IV 4 IX 9 XL 40 XC 90 CD 400 CM 900 Naprimer chislo 94 budet XCIV 100 10 5 1 94 tak nazyvaemoe pravilo vychitaniya poyavilos v epohu pozdnej antichnosti a do etogo rimlyane pisali chislo 4 kak IIII a chislo 40 kak XXXX Drugie sposoby vychitaniya nedopustimy tak chislo 99 dolzhno byt zapisano kak XCIX no ne kak IC Odnako v nashi dni v nekotoryh sluchayah ispolzuetsya i uproshennaya zapis rimskih chisel naprimer v programme Microsoft Excel pri preobrazovanii arabskih cifr v rimskie pri pomoshi funkcii RIMSKOE mozhno ispolzovat neskolko vidov predstavleniya chisel ot klassicheskogo do silno uproshyonnogo tak chislo 499 mozhet byt zapisano kak CDXCIX LDVLIV XDIX VDIV ili ID Uproshenie sostoit v tom chto dlya umensheniya kakoj libo cifry sleva ot neyo mozhet pisatsya lyubaya drugaya cifra 999 Tysyacha M vychtem 1 I poluchim 999 IM vmesto CMXCIX Sledstvie 1999 MIM vmesto MCMXCIX 95 Sto C vychtem 5 V poluchim 95 VC vmesto XCV 1950 Tysyacha M vychtem 50 L poluchim 950 LM Sledstvie 1950 MLM vmesto MCML Sluchai takoj zapisi chisel kak pravilo godov chasto vstrechayutsya v titrah teleserialov SShA Naprimer dlya goda 1998 MIIM vmesto MCMXCVIII S pomoshyu rimskih cifr mozhno zapisyvat i bo lshie klassy chisel Dlya etogo nad temi ciframi kotorye oboznachayut tysyachi stavitsya cherta a nad ciframi kotorye oboznachayut milliony dvojnaya cherta Isklyuchenie sostavlyaet cifra I vmesto cherty sverhu zapisyvaetsya cifra M a nachinaya s milliona po odnoj cherte sverhu Naprimer chislo 123123 budet vyglyadet tak CXXIII CXXIII A million kak I no tolko ne s odnoj a s dvumya chertami vo glave IPrimenenieAvtograf B N Elcina 10 noyabrya 1988 goda Mesyac ukazan rimskimi ciframiRimskie cifry oboznachayushie den nedeli na vitrine odnogo iz magazinov v VilnyuseAnglosaksonskaya sistema marok uglubleniya ispolzuemaya na korme klipera Katti Sark osadka 6 7 metra V russkom yazyke rimskie cifry ispolzuyut v sleduyushih sluchayah Nomer veka ili tysyacheletiya XIX vek II tysyacheletie do n e Spryazhenie glagolov Markirovka ciferblatov chasov pod starinu Nomer toma v mnogotomnoj knige ili toma zhurnalov inogda nomera chastej knigi razdelov ili glav Tronnyj nomer monarha s odinakovym imenem Pyotr I Elizaveta II Aleksandr III Gruppa krovi na nashivkah formy voennosluzhashih VS RF Na sovetskih sudah oboznachali osadku v metrah rimskimi bukvami na anglijskih korablyah v futah rimskimi bukvami V nekotoryh izdaniyah nomera listov s predisloviem k knige chtoby ne ispravlyat ssylki vnutri osnovnogo teksta pri izmenenii predisloviya Poryadkovye nomera vazhnyh istoricheskih sobytij ili punktov spiska naprimer V postulat Evklida II mirovaya vojna XX sezd KPSS Igry XXII Olimpiady i tomu podobnoe Valentnost himicheskih elementov naprimer oksid sery IV hlorid medi II Nomer korpusa v vooruzhyonnyh silah Inogda god okonchaniya postrojki zdaniya na ego frontone Poryadkovyj nomer stupeni v zvukoryade V matematicheskom analize rimskimi ciframi zapisyvayut nomer proizvodnoj pravda pri chtenii obychno proiznosyat shtrih vmesto I dva shtriha vmesto II tri shtriha vmesto III Nakonec nachinaya s IV chitayut chetvyortaya proizvodnaya f x fI x f 1 x displaystyle f x f I x f 1 x i fIV x f 4 x displaystyle f IV x f 4 x Rimskie cifry shiroko upotreblyali v Evrope i SSSR pri ukazanii daty dlya oboznacheniya mesyaca goda naprimer 11 III 85 ili 9 XI 89 eto mozhno uvidet na mnogih arhivnyh dokumentah teh vremyon Podobnym obrazom cherez kosuyu chertu v tom chisle zapisyvali datu uroka v klassnyh zhurnalah naprimer 24 II Dlya ukazaniya dat rozhdeniya i smerti na nadgrobiyah chasto ispolzovali osobyj format gde mesyac goda takzhe oboznachali rimskimi ciframi naprimer 1825XI87 1926I43 displaystyle 18 textstyle frac 25 XI 87 sim 19 textstyle frac 26 I 43 25 noyabrya 1887 26 yanvarya 1943 Podobnyj format v 1970 1980 h godah ispolzovali v medicinskih spravkah S perehodom na kompyuternuyu obrabotku informacii formaty daty osnovannye na rimskih cifrah prakticheski vyshli iz upotrebleniya V drugih yazykah sfera primeneniya rimskih cifr mozhet imet osobennosti V zapadnyh stranah rimskimi ciframi neredko zapisyvayut nomer goda naprimer na frontonah zdanij i v titrah video kino i teleprodukcii V sovremennoj Litve na dorozhnyh znakah na vitrinah magazinov na vyveskah predpriyatij rimskimi ciframi mogut oboznachat dni nedeli YunikodSimvoly so shodnym nachertaniem I Ӏ ӏ I I i l ɪ ꟾ ǀ ﺍ ا ו ן I 丨 ㅣ ᛁ ᛁ 𐍘 𐍭 b Simvoly so shodnym nachertaniem V v Ѵ ѵ n 𐍝 b Simvol so shodnym nachertaniem 𐍜 Simvoly so shodnym nachertaniem X x Ꭓ ꭓ X x H h ㄨ メ ᚷ 𐩩 b Simvoly so shodnym nachertaniem L Լ լ ւ 𐍰 ㄴ 𐐛 𐑃 ℒ b Simvoly so shodnym nachertaniem C c S s Ϲ ϲ င 𐐕 𐐽 b Simvoly so shodnym nachertaniem D D Ɒ ɒ 𐐟 𐑇 b Simvoly so shodnym nachertaniem M M M m Ϻ ℳ ᛖ b Simvoly so shodnym nachertaniem ወ 𐩥 𐐅 𐐭 b Simvoly so shodnym nachertaniem ᛎ 𐰸 b Standart Yunikoda rekomenduet ispolzovat dlya predstavleniya rimskih cifr obychnye latinskie bukvy Tem ne menee standart vklyuchaet takzhe specialnye simvoly dlya rimskih cifr kak chast Chislovyh form v oblasti znakov s kodami s U 2160 po U 2188 Naprimer MCMLXXXVIII mozhet byt predstavleno v forme Etot diapazon vklyuchaet kak strochnye tak i propisnye cifry dlya zapisi chisel ot 1 do 12 v tom chisle i kombinirovannye glify dlya sostavnyh chisel takih kak 8 glavnym obrazom dlya obespecheniya sovmestimosti s vostochnoaziatskimi naborami simvolov v takih promyshlennyh standartah kak gde eti simvoly opredeleny Kombinirovannye glify ispolzuyutsya dlya predstavleniya chisel kotorye ranee sostavlyalis iz otdelnyh simvolov naprimer vmesto ego predstavleniya kak X i I I V dopolnenie k etomu glify sushestvuyut dlya arhaichnyh form zapisi chisel 1000 5000 10 000 bolshoj obratnoj C Ɔ pozdnej formy zapisi 6 pohozhej na grecheskuyu stigmu Ϛ rannej formy zapisi chisla 50 pohozhej na strelku ukazyvayushuyu vniz 50 000 i 100 000 Malenkaya obratnaya c ↄ ne vklyuchena v simvoly rimskih cifr no vklyuchena v standart Yunikod kak propisnaya klavdieva bukva Ↄ Znachenie 1 2 3 4 5 6 7 8Simvol U 2160 U 2161 U 2162 U 2163 U 2164 U 2165 U 2166 U 2167 U 2170 U 2171 U 2172 U 2173 U 2174 U 2175 U 2176 U 2177 Znachenie 9 10 11 12 50 100 500 1000Simvol U 2168 U 2169 U 216A U 216B U 216C U 216D U 216E U 216F U 2178 U 2179 U 217A U 217B U 217C U 217D U 217E U 217F Znachenie 1000 5000 10 000 100 6 50 50 000 100 000Simvol U 2180 U 2181 U 2182 U 2183 Ↄ U 2185 U 2186 U 2187 U 2188 Otobrazhenie vseh etih simvolov trebuet nalichiya programmnogo obespecheniya podderzhivayushego standart Yunikod i shrifta soderzhashego sootvetstvuyushie etim simvolam glify naprimer shrift Universalia MashinopisMashinopisnye rimskie cifry v oglavlenii Na pishushej mashinke s russkim shriftom dlya napisaniya otsutstvuyushih latinskih znakov ispolzuyutsya vizualno pohozhie russkie bukvy naprimer P dlya II Sh dlya III U dlya V i arabskaya cifra 1 imeyushaya v mashinopisnom shrifte napisanie I Dlya L i D dopuskaetsya ispolzovanie L i D Rimskie cifry v mashinopisi Chislo I II III IV V VI VII VIII IX X L C D MMashinopis 1 P Sh 1U U U1 UP USh 1H H L S D MRegulyarnye vyrazheniyaRegulyarnoe vyrazhenie dlya proverki rimskih cifr M 0 3 D C 0 3 C DM L X 0 3 X LC V I 0 3 I VX V yazyke Perl dlya poiska rimskih cifr v stroke mozhno ispolzovat regulyarnoe vyrazhenie m b M 0 3 D C 0 3 C DM L X 0 3 X LC I 0 3 V I 0 3 I VX b gs PreobrazovanieDlya preobrazovaniya chisel zapisannyh arabskimi ciframi v rimskie ispolzuyutsya specialnye funkcii Naprimer v anglijskoj versii Microsoft Excel i v lyuboj versii OpenOffice org Calc dlya etogo sushestvuet funkciya ROMAN argument forma v russkoj versii Microsoft Excel eta funkciya nazyvaetsya RIMSKOE chislo forma Neobyazatelnyj argument forma mozhet prinimat znacheniya ot 0 do 4 a takzhe lozh i istina Otsutstvie argumenta forma ili ravenstvo ego 0 ili istina dayot klassicheskuyu stroguyu formu preobrazovaniya znachenie 4 ili lozh dayot naibolee uproshyonnuyu znacheniya 1 2 3 dayut promezhutochnye po strogosti uprosheniyu varianty Razlichiya proyavlyayutsya naprimer na chislah 45 49 495 499 ukazany pervye v diapazone 1 3999 Primer primeneniya funkcii RIMSKOE chislo forma forma 0 1 2 3 4chislo45 XLV VL VL VL VL49 XLIX VLIV IL IL IL495 CDXCV LDVL XDV VD VD499 CDXCIX LDVLIV XDIX VDIV ID Dlya necelyh znachenij argumenta chislo proizvoditsya okruglenie vniz do celogo esli posle etogo znachenie okazyvaetsya bolshe 3999 ili menshe 0 to funkciya vozvrashaet Znach dlya znacheniya 0 vozvrashaetsya pustaya yachejka Funkcii preobrazovaniya na JavaScriptvar arab 1 4 5 9 10 40 50 90 100 400 500 900 1000 var roman I IV V IX X XL L XC C CD D CM M function arabToRoman number if number return var ret var i arab length 1 while number gt 0 if number gt arab i ret roman i number arab i else i return ret function romanToArab str str str toUpperCase var ret 0 var i arab length 1 var pos 0 while i gt 0 amp amp pos lt str length if str substr pos roman i length roman i ret arab i pos roman i length else i return ret Analogichnye funkcii na yazyke C C89 include lt string h gt const int arabar 1 4 5 9 10 40 50 90 100 400 500 900 1000 const char romanar I IV V IX X XL L XC C CD D CM M char arab2roman unsigned short int arab static char roman 80 const int m sizeof arabar sizeof int 1 arabmax arabar m const char romanmax romanar m 0 int i n if arab roman 0 return roman i 0 while arab gt arabmax roman i romanmax arab arabmax n m while arab gt 0 if arab gt arabar n roman i romanar n 0 if n amp 1 roman i romanar n 1 arab arabar n else n roman i 0 return roman unsigned short int roman2arab char roman const int m sizeof arabar sizeof int 1 unsigned short int arab int len n i pir len strlen roman arab 0 n m i 0 while n gt 0 amp amp i lt len pir n amp 1 if roman i romanar n 0 amp amp pir roman i 1 romanar n 1 arab arabar n i 1 pir else n return arab Programma perevoda arabskih cifr v rimskie na yazyke Scala val arabar Array 1 4 5 9 10 40 50 90 100 400 500 900 1000 val romanar Array I IV V IX X XL L XC C CD D CM M def arab2roman arab Int acc String n Int arabar length 1 String if arab 0 acc else if arab gt arabar n arab2roman arab arabar n acc romanar n n else arab2roman arab acc n 1 arab2roman 4933 MMMMCMXXXIII Programma perevoda arabskih cifr v rimskie i naoborot na yazyke Pascaltype str2 string 2 const Rims array 1 14 of str2 M CM D CD C XC L XL X IX V IV I Arab array 1 14 of integer 1000 900 500 400 100 90 50 40 10 9 5 4 1 0 var N NI I J integer S string function Arab2Rim N integer string var S string I integer begin S I 1 while N gt 0 do begin while Arab I lt N do begin S S Rims I N N Arab I end I I 1 end Arab2Rim S end function Rim2Arab S string integer var I N integer begin I 1 N 0 while S lt gt do begin while Rims I Copy S 1 Length Rims I do begin S Copy S 1 Length Rims I 255 N N Arab I end I I 1 end Rim2Arab N end begin WriteLn Perevod iz arabskih cifr v rimskie 1999 B SA Write Vvedite chislo dlya preobrazovaniya ReadLn N for NI 26 to 46 do WriteLn NI Arab2Rim NI obratno Rim2Arab Arab2Rim NI end Funkciya preobrazovaniya arabskogo chisla v rimskoe na Pascalfunction Arab2Roman arab integer string var i integer d integer arab str string arab len integer begin Result arab str IntToStr arab arab len Length arab str for i 0 to arab len 1 do begin d StrToInt String arab str arab len i if d 1 mod 5 0 then Result Copy IXCM 1 i 1 Copy VXLCDM i 2 d 1 div 5 1 Result else Result Copy VLD 1 i d div 5 Copy IIIXXXCCCMMM 1 i 3 d mod 5 Result end end Funkciya preobrazovaniya arabskogo chisla v rimskoe na BASIC samyj kratkij kod 10 INPUT ARABSKOE ChISLO A 20 FOR I 0 TO LEN A 1 30 X VAL MID A LEN A I 1 40 IF X 4 OR X 9 THEN B MID IXCM I 1 1 MID VXLCDM I 2 X 1 5 1 B 50 IF X lt 4 THEN B MID IIIXXXCCCMMM 1 I 3 X B ELSE IF X gt 4 AND X lt 9 THEN B MID VLD I 1 1 MID IIIXXXCCCMMM 1 I 3 X 5 B 60 NEXT I 70 PRINT RIMSKOE ChISLO B Funkciya preobrazovaniya arabskogo chisla v dannom sluchae 1999 v rimskoe na XPathstring join for num in 1999 return M MM MMM num idiv 1000 mod 10 1 C CC CCC CD D DC DCC DCCC CM num idiv 100 mod 10 1 X XX XXX XL L LX LXX LXXX XC num idiv 10 mod 10 1 I II III IV V VI VII VIII IX num mod 10 1 Funkciya preobrazovaniya arabskogo chisla v dannom sluchae 1999 v rimskoe na Perluse strict use warnings my n 1999 my nums qw I II III IV V VI VII VIII IX qw X XX XXX XL L LX LXX LXXX XC qw C CC CCC CD D DC DCC DCCC CM qw M MM MMM my i 0 my res push res nums gt i n 10 n int n 10 0 for 0 3 print reverse res Klass dlya preobrazovaniya arabskogo chisla ot 1 do 3999 v rimskoe na Javaimport java util public class IntegerConverter public static String intToRoman int number if number gt 4000 number lt 0 return null StringBuilder result new StringBuilder for Integer key units descendingKeySet while number gt key number key result append units get key return result toString private static final NavigableMap lt Integer String gt units static NavigableMap lt Integer String gt initMap new TreeMap lt gt initMap put 1000 M initMap put 900 CM initMap put 500 D initMap put 400 CD initMap put 100 C initMap put 90 XC initMap put 50 L initMap put 40 XL initMap put 10 X initMap put 9 IX initMap put 5 V initMap put 4 IV initMap put 1 I units Collections unmodifiableNavigableMap initMap Extension class dlya preobrazovaniya rimskogo chisla v arabskoe i obratno na CSharp lt summary gt Klass prednaznachen dlya preobrazovanij arabskih chisel v rimskie i obratno lt summary gt lt remarks gt lt para gt Klass iznachalno soderzhit alfavit rimskih chisel sposobnyh opredelyat arabskie chisla ot 1 do 39999 lt para gt lt para gt Esli neobhodimo rasshirit diapazon to mozhno opredelit dopolnitelnye oboznacheniya dlya rimskih chisel ispolzuya pole lt see cref BazovyeRimskieChisla gt BazovyeRimskieChisla lt remarks gt public static class RimskoeChislo lt summary gt Alfavit bazovyh rimskih chisel lt para gt Alfavit postroen v vide slovarya Klyuchom slovarya yavlyaetsya arabskoe chislo int znacheniem sootvetstvuyushee emu rimskoe chislo string lt para gt lt summary gt lt remarks gt lt para gt Soderzhit rimskoe oboznacheniya arabskih chisel 1 4 5 9 gde predstavlyaet soboj 0 N nulej lt para gt lt para gt Pri sozdanii soderzhit v sebe oboznachenie chisel ot 1 do 10000 I Tak kak v rimskom chisle odin simvol ne mozhet vstrechatsya bolee treh raz to iznachalno mozhno preobrazovat v rimskij format chisla ot 1 do 39999 lt para gt lt para gt Esli Vy hotite imet vozmozhnost rabotat s bolshim kolichestvom rimskih chisel to vy dolzhny dobavit v spisok dopolnitelnye oboznacheniya nachinaya s 40000 ne propuskaya elementy 1 4 5 9 lt para gt lt remarks gt public static SortedList lt int string gt BazovyeRimskieChisla get set static RimskoeChislo BazovyeRimskieChisla new SortedList lt int string gt 17 BazovyeRimskieChisla Add 1 I BazovyeRimskieChisla Add 4 IV BazovyeRimskieChisla Add 5 V BazovyeRimskieChisla Add 9 IX BazovyeRimskieChisla Add 10 X BazovyeRimskieChisla Add 40 XL BazovyeRimskieChisla Add 50 L BazovyeRimskieChisla Add 90 XC BazovyeRimskieChisla Add 100 C BazovyeRimskieChisla Add 400 CD BazovyeRimskieChisla Add 500 D BazovyeRimskieChisla Add 900 CM BazovyeRimskieChisla Add 1000 M BazovyeRimskieChisla Add 4000 M BazovyeRimskieChisla Add 5000 BazovyeRimskieChisla Add 9000 M BazovyeRimskieChisla Add 10000 lt summary gt Rasschityvaet maksimalno vozmozhnoe rimskoe chislo dlya tekushego alfavita rimskih chisel lt summary gt lt returns gt Maksimalno vozmozhnoe rimskoe chislo lt returns gt public static uint MaksimalnoeRimskoeChislo int posledneeChislo BazovyeRimskieChisla Keys Last int chisloBezNulej int Parse posledneeChislo ToString Replace 0 0 int predvaritelnoe 0 switch chisloBezNulej case 1 predvaritelnoe posledneeChislo 4 1 break case 4 case 9 predvaritelnoe posledneeChislo break case 5 predvaritelnoe posledneeChislo posledneeChislo 5 3 break default break return uint Parse predvaritelnoe ToString Replace 0 9 lt summary gt Konventiruet celoe chislo v rimskoe chislo lt summary gt lt param name chisloArab gt Arabskoe chislo kotoroe neobhodimo preobrazovat v rimskuyu zapis lt param gt lt exception cref ArgumentOutOfRangeException gt Generiruetsya kogda v kachestve parametra peredano chislo ravnoe 0 ili chislo bolshee chem maksimalnaya rimskoe chislo lt exception gt lt returns gt Stroku predstavlyayushuyu soboj rimskoj chislo lt returns gt public static string ArabskoeVRimskoe this int chisloArab StringBuilder chisloRimskoe new StringBuilder Isklyuchaem znak iz arabskogo chisla i delaem ego pervym simvolom rimskogo chisla if chisloArab lt 0 chisloRimskoe Append chisloArab chisloArab if chisloArab 0 throw new ArgumentOutOfRangeException chisloArab chisloArab Nedopustimoe znachenie argumenta rimskie chisla ne mogut byt ravnymi 0 else if chisloArab gt MaksimalnoeRimskoeChislo throw new ArgumentOutOfRangeException chisloArab chisloArab string Format Nedopustimoe znachenie argumenta nevozmozhno zadat rimskoe chislo bolshee chem 0 MaksimalnoeRimskoeChislo Raskladyvaem arabskoe chislo na sostavlyayushie ego rimskie chisla i obedinyaem ih v odnu stroku var neobhodimyeBazovyeRimskieChisla from k in BazovyeRimskieChisla Keys where k lt chisloArab orderby k descending select k foreach int tek in neobhodimyeBazovyeRimskieChisla while chisloArab tek gt 1 chisloArab tek chisloRimskoe Append BazovyeRimskieChisla tek return chisloRimskoe ToString lt summary gt Konventiruet rimskoe chislo v arabskoe lt summary gt lt param name chisloRimskoe gt Rimskoe chislo kotoroe neobhodimo preobrazovat v tip int lt param gt lt exception cref FormatException gt Generiruetsya kogda v kachestve parametra peredano chislo ne yavlyayusheesya rimskim lt exception gt lt returns gt Celoe chislo predstavlyayushee soboj arabskuyu zapis rimskogo chisla lt returns gt public static int RimskoeVArabskoe this string chisloRimskoe int chisloArab 0 sbyte otricatelnoe 1 string rim chisloRimskoe Trim if rim 0 otricatelnoe 1 rim rim Substring 1 StringBuilder shablonRimskogoNomera new StringBuilder foreach int k in BazovyeRimskieChisla Keys int indeks BazovyeRimskieChisla Keys IndexOf k string kvantifikator if indeks 0 indeks 4 0 kvantifikator 0 3 shablonRimskogoNomera Insert 0 string Format lt 0 gt 1 2 k ToString BazovyeRimskieChisla k kvantifikator Ignorirovat registr sootvetstvie dolzhno nachinatsya s nachala stroki shablonRimskogoNomera Insert 0 i Sootvetstvie dolzhno obnaruzhivatsya v konce stroki shablonRimskogoNomera Append Uproshennaya proverka Ne proveryaet takih oshibok kak IVII if Regex IsMatch rim shablonRimskogoNomera ToString throw new FormatException string Format Tekst 0 ne yavlyaetsya rimskim chislom chisloRimskoe Match chislo Regex Match rim shablonRimskogoNomera ToString foreach int k in BazovyeRimskieChisla Keys chisloArab chislo Groups k ToString Length BazovyeRimskieChisla k Length k return chisloArab otricatelnoe PrimechaniyaKommentarii Avtor Kuznecov Evgenij A Avtor Kuznecov Evgenij A 1992 god Istochniki Cifry i sistemy schisleniya Arhivnaya kopiya ot 22 noyabrya 2018 na Wayback Machine Onlajn Enciklopediya Krugosvet M Ya Vygodskij Spravochnik po elementarnoj matematike Moskva 1958 g Gosudarstvennoe izdatelstvo fiziko matematicheskoj literatury str 62 Beckham s road to Roman Arhivnaya kopiya ot 1 maya 2020 na Wayback Machine Bi bi si 17 April 2002 Unicode Standard 15 3 Arhivnaya kopiya ot 27 iyunya 2010 na Wayback Machine For most purposes it is preferable to compose the Roman numerals from sequences of the appropriate Latin letters Unicode Number Forms neopr Data obrasheniya 30 marta 2009 Arhivirovano 25 marta 2009 goda Perry David J Proposal to Add Additional Ancient Roman Characters to UCS Arhivnaya kopiya ot 22 iyunya 2011 na Wayback Machine Berezin Boris Ivanovich Shkola mashinopisi M Legkaya i pishevaya promyshlennost 1984 S 85 168 s Ozeran Antonina Evgenevna Mashinopis Minsk Vyshejshaya shkola 1971 S 98 225 s ISBN 978 5 458 48020 8 Arhivirovano 25 maya 2023 goda Glava 31 Rimskaya chislovaya notaciya Idei realizacii neopr Data obrasheniya 15 oktyabrya 2015 Arhivirovano 18 noyabrya 2015 goda Nauka i zhizn N12 1986 str 95 V Pticyn g MoskvaSm takzheArabskie cifry Simvoly drevnerimskih denezhnyh i vesovyh edinicV state ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 20 oktyabrya 2024




