ARABICアラビック関数

本ページには広告が含まれています。

ローマ数字をアラビア数字に変換します。機種依存文字(環境依存文字)ではなくアルファベットで指定してください。アラビア数字をローマ数字に変換するにはROMAN関数 (自作関数)を使用します。

構文
  1. Double = ARABIC( str )
引数
str 必須
ローマ数字を文字列で指定
戻り値
変換したアラビア数字

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   str : ローマ数字を文字列で指定 
// 【戻り値】
//   変換したアラビア数字 
//////////////////////////////////////////////////
FUNCTION ARABIC(str)
	DIM arr[][1] = "IV", "IIII", + _
					"IX", "VIIII", + _
					"XL", "XXXX", + _
					"XC", "LXXXX", + _
					"CD", "CCCC", + _
					"CM", "DCCCC"
	DIM Roman[] = "I", "V", "X", "L", "C", "D", "M"
	DIM Arbic[] = 1, 5, 10, 50, 100, 500, 1000
	
	FOR n = 0 TO UBound(arr)
		str = REPLACE(str, arr[n][0], arr[n][1])
	NEXT
	
	DIM res = 0
	
	FOR s = 1 TO LENGTH(str)
		FOR ss = UBound(Arbic) TO 0 STEP -1
			IFB COPY(str, s, 1) = Roman[ss] THEN
				res = res + Arbic[ss]
			ENDIF
		NEXT
	NEXT
	
	IF res <= 0 OR res >= 4000 THEN res = -1 
	
	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[] = "IX", "XXIV", "LI", "LXXXIV", "CIV", "CDXCV", "DCLVIII", "MCCL", "MMDCLXXXIV", "MMMCMXLV"

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

関連記事

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