ARABIC

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

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

プログラム

//////////////////////////////////////////////////
// 【引数】
//   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)
		num = REPLACE(str, arr[n][0], arr[n][1])
	NEXT
	
	DIM res = 0
	
	FOR s = 1 TO LENGTH(num)
		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

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
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

関連記事

ROMAN
ROMAN関数は、アラビア数字をローマ数字に変換する関数です。ローマ数字をアラビア数字に変換するには、ARABIC関数を使います。
ABS (スクリプト関数)
引数の絶対値を求めます。
ARCCOS (スクリプト関数)
引数の逆余弦を求めます。
ARCSIN (スクリプト関数)
引数の逆正弦を求めます。
ARCTAN (スクリプト関数)
引数の逆正接を求めます。
CEIL (スクリプト関数)
正の方向へ切り上げた数値を返します。
EXP (スクリプト関数)
自然指数関数を求めます。
LN (スクリプト関数)
自然対数を求めます。
LOGN (スクリプト関数)
常用対数を求めます。
ZCUT (スクリプト関数)
マイナス値を0にして返します。プラス値はそのままの値を返します。
INT (スクリプト関数)
小数点以下を切り捨てた値を返します。負の値の場合、正の値のようにより小さい値にではなく0に近い側に切り捨てされます。
POWER (スクリプト関数)
数値のべき乗を求めます。
RANDOM (スクリプト関数)
RANDOM関数は、0以上Range未満の範囲にある乱数(整数)を返します。引数を省略した場合は、0以上1未満の乱数(小数点以下15桁)を返します。
ROUND (スクリプト関数)
指定した位置で偶数丸めした値を返します。四捨五入する場合は、roundOff関数を使います。
isEven
引数に指定した数値が偶数かどうかを調べます。偶数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
isOdd
引数に指定した数値が奇数かどうかを調べます。奇数ならばTrue、それ以外の数値はFalse、文字列はエラー値を返します。
radToDeg
弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
SQRT (スクリプト関数)
引数の平方根を求めます。累乗根はPOWER関数を使います。
fact
引数に指定した自然数の階乗を求めます。再帰関数。二重階乗を求めるにはfactDouble関数を使います。
factDouble
引数に指定した自然数の二重階乗を求めます。戻値の型はDouble型です。再帰関数。階乗を求めるにはfact関数を使います。
degToRad
度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
GCD
GCD関数は、引数に指定した配列の最大公約数(Greatest Common Measure)を求める関数です。最小公倍数を求めるには、LCM関数を使います。
LCM
LCM関数は、引数に指定した配列の最小公倍数(Least Common Multiple)を求める関数です。最大公約数を求めるには、GMD関数を使います。
hexToDec
16進数を10進数に変換します。10進数を16進数に変換するにはdecToHex関数を使います。
decToHex
10進数を16進数に変換します。16進数を10進数に変換するにはhexToDec関数を使います。
binToDec
2進数を10進数に変換します。10進数を2進数に変換するにはdecToBin関数を使います。
binToHex
2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin関数を使います。
hexToBin
16進数を2進数に変換します。2進数を16進数に変換するにはbinToHex関数を使います。
decToBin
10進数を2進数に変換します。2進数を10進数に変換するにはbinToDec関数を使います。
isPrime
引数に指定した数値が素数かどうかを調べます。素数の場合True、素数でない場合Falseを返します。
normalizeAngle
度単位の角度を0~360度に正規化します。
divisors
引数に指定した数値の約数をリストを配列で返します。
digitSum
引数に指定した数字和(数値の各桁を足した結果)を返します。正の整数以外を指定した場合は、エラー値を返します。
Collatz
コラッツ数列を求め結果を配列で返します。
Kaprekar
カプレカ数を求め結果を配列で返します。