Как перевести число из римской системы счисления в десятичную
Перейти к содержимому

Как перевести число из римской системы счисления в десятичную

  • автор:

О римских цифрах

Описание записи числа римскими цифрами. Конвертер между римскими цифрами и десятичными цифрами.

Римляне, как известно, использовали для записи числа латинские буквы.

Считается, что римская система счисления является классическим примером непозиционной системы счисления, то есть такой системы счисления, в которой величина, которую обозначает цифра, не зависит от положения в числе.

Напомним, что в римской системе счисления 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 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *