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