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を繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
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関数 (自作関数)
弧度法から度数法に変換します。
degToRad関数 (自作関数)
度数法から弧度法に変換します。
binToDec関数 (自作関数)
2進数を10進数に変換します。負数・小数の値にも対応しています。
binToHex関数 (自作関数)
2進数を16進数に変換します。負数・小数の値にも対応しています。
hexToBin関数 (自作関数)
16進数を2進数に変換します。負数・小数の値にも対応しています。
hexToDec関数 (自作関数)
16進数を10進数に変換します。負数・小数の値にも対応しています。
decToBin関数 (自作関数)
10進数を2進数に変換します。負数・小数の値にも対応しています。
decToHex関数 (自作関数)
10進数を16進数に変換します。負数・小数の値にも対応しています。
ABS関数 (スクリプト関数)
引数の絶対値を求めます。