ROMANローマン

アラビア数字をローマ数字に変換します。数値は半角で指定します。ローマ数字をアラビア数字に変換するにはARABIC (自作関数)を使用します。

構文
  1. UString = ROMAN( num )
引数
num 必須
アラビア数字
戻り値
ローマ数字に変換したアラビア数字

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   num : アラビア数字 
// 【戻り値】
//   ローマ数字に変換したアラビア数字 
//////////////////////////////////////////////////
FUNCTION ROMAN(num)
	DIM arr[][1] = 1, "I", + _
					2, "II", + _
					3, "III", + _
					4, "IV", + _
					5, "V", + _
					6, "VI", + _
					7, "VII", + _
					8, "VIII", + _
					9, "IX", + _
					10, "X", + _
					40, "XL", + _
					50, "L", + _
					90, "XC", + _
					100, "C", + _
					400, "CD", + _
					500, "D", + _
					900, "CM", + _
					1000, "M"
	DIM res = ""
	
	n = UBound(arr)
	REPEAT
		SELECT TRUE
			CASE num / arr[n][0] >= 1
				res = res + arr[n][1]
				num = num - arr[n][0]
			DEFAULT
				n = n - 1
		SELEND
	UNTIL num = 0
	
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND

アラビア数字・ローマ数字対応表

アラビア数字 ローマ数字
1 I
2 II
3 III
4 IV
5 V
6 VI
7 VII
8 VIII
9 IX
10 X
40 XL
50 L
90 XC
100 C
400 CD
500 D
900 CM
1000 M

使い方

アラビア数字をローマ数字に変換します。

UWSC
DIM array[] = 9, 24, 51, 84, 104, 495, 658, 1250, 2684, 3945

FOR item IN array
	PRINT item + "," + ROMAN(item)
NEXT
結果
CSV
9,      IX
24,     XXIV
51,     LI
84,     LXXXIV
104,    CIV
495,    CDXCV
658,    DCLVIII
1250,   MCCL
2684,   MMDCLXXXIV
3945,   MMMCMXLV

この記事は役に立ちましたか?

はい
いいえ
ご協力ありがとうございます。

関連記事

ARABIC (自作関数)
ローマ数字 を アラビア数字 に変換します。
radToDeg (自作関数)
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
degToRad (自作関数)
度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
binToDec (自作関数)
2進数を10進数に変換します。負数・小数の値にも対応しています。
binToHex (自作関数)
2進数を16進数に変換します。負数・小数の値にも対応しています。
hexToBin (自作関数)
16進数を2進数に変換します。負数・小数の値にも対応しています。
hexToDec (自作関数)
16進数を10進数に変換します。負数・小数の値にも対応しています。
decToBin (自作関数)
10進数を2進数に変換します。負数・小数の値にも対応しています。
decToHex (自作関数)
10進数を16進数に変換します。負数・小数の値にも対応しています。
ABS関数 (スクリプト関数)
引数の絶対値を求めます。