О римских цифрах
Описание записи числа римскими цифрами. Конвертер между римскими цифрами и десятичными цифрами.
Римляне, как известно, использовали для записи числа латинские буквы.
Считается, что римская система счисления является классическим примером непозиционной системы счисления, то есть такой системы счисления, в которой величина, которую обозначает цифра, не зависит от положения в числе.
Напомним, что в римской системе счисления I обозначает 1, V обозначает 5, X — 10, L — 50, C — 100, D — 500, M — 1000.
Например, число 3 в римской системе счисления будет обозначаться как III.
Однако на самом деле не все так просто, и она не является полностью непозиционной системой счисления, потому что в римской системе счисления есть дополнительное правило, которое влияет на величину, которую обозначает цифра, в зависимости от ее положения.
Правило это запрещает употреблении одной и той же цифры более 3 раз подряд, поэтому три это III, а четыре это уже IV, и I(1), стоящая перед большей цифрой V(5), обозначает вычитание, то есть фактически равна -1.
Ниже два калькулятора — для перевода числа из диапазона 1 – 3999 в римское число и наоборот.
Для чисел больше 3999 исторически использовались несколько другие нотации, например, apostrophus или vinculum, но какого-либо единого стандарта не существовало.
Римская система счисления
Для записи чисел в римской системе используются два правила:
1) каждый меньший знак, поставленный слева от большего, вычитается из него;
2) каждый меньший знак, поставленный справа от большего, прибавляется к нему.
Число 49 в римской системе счисления имеет вид XLIX=(50-10)+(10-1)=40+9 (две группы первого вида).
Число 444 в римской системе счисления будет записано в виде CDXLIV=(500-100)+(50-10)+(5-1)=400+40+4 (три группы второго вида).
Римская система счисления сегодня используется в основном для обозначения знаменательных и юбилейных дат, разделов и глав в книгах.
- Математика/все учебники
- Точные науки/все учебники
- Наука/все учебники
- Требуется внимание (все учебники)
- Учебники по теме/все учебники
Перевод в римские цифры онлайн
Онлайн калькулятор перевода римских цифр в русские числа (арабские цифры), двоичной системы счисления. Для конвертации числа, в римские числа, введите нужное число для перевода в десятичной системе и нажмите, перевести.
Таблица
| Арабские цифры (русские) | Римские | Арабские цифры (русские) | Римские |
|---|---|---|---|
| 1 | I | 30 | XXX |
| 2 | II | 40 | XL |
| 3 | III | 50 | L |
| 4 | IV | 60 | LX |
| 5 | V | 70 | LXX |
| 6 | VI | 80 | LXXX |
| 7 | VII | 90 | XC |
| 8 | VIII | 100 | C |
| 9 | IX | 200 | CC |
| 10 | X | 300 | CCC |
| 11 | XI | 400 | CD |
| 12 | XII | 500 | D |
| 13 | XIII | 600 | DC |
| 14 | XIV | 700 | DCC |
| 15 | XV | 800 | DCCC |
| 16 | XVI | 900 | CM |
| 17 | XVII | 1000 | M |
| 18 | XVIII | 1950 | MCML |
| 19 | XIX | 2325 | MMCCCXXV |
| 20 | XX | 2550 | MMDL |
Понравился калькулятор? Поделитесь с друзьями:
Перевод числа из римской системы счисления в десятичное представление
Пытаюсь реализовать конвертер чисел из римской системы счисления, встречающихся по тексту, в десятичное представление. В чем затык? IIL не является валидным числом, например. Как такие числа отсеивать? И второе. Число вида IX, как их корректно обрабатывать?
Отслеживать
задан 1 фев 2020 в 14:36
Возможный дубликат вопроса: Как перевести с десятичной системы счисления в римскую?
1 фев 2020 в 15:48
1 фев 2020 в 16:40
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В PowerShell проверку корректности значений можно осуществлять непосредственно при объявлении (описании) параметров функции. Иными словами:
#requires -version 6 function ConvertFrom-Roman < [CmdletBinding()] param( # параметр обязателен и может передаваться через пайп [Parameter(Mandatory, ValueFromPipeline)] # паттерн валидации допустимых значений [ValidatePattern('^(?=[MDCLXVI])M*(C[MD]|D?C)(X[CL]|L?X)(I[XV]|V?I)$')] # значение не может быть пустым [ValidateNotNullOrEmpty()] # тип значения - строка [String]$Number ) process < # карта римских чисел $map = @for ($i, $a = 0, [Char[]]$Number; $i -lt $a.Length; $i++) < # разбираем посимвольно $, $<>> = "$($a[$i])", "$($a[$i + 1])" # текущий и следующий символы $dec += [Int64]"$('+-'[$i + 1 -lt $a.Length -and $map[$] -lt $map[$<>>]])$($map[$])" > $dec # результат > >
ConvertFrom-Roman XLVII # 47 'dlxxvii' | ConvertFrom-Roman # 577 ('mmxx', 'cdxxix', 'di').ForEach # 2020, 429, 501