本ページには広告が含まれています。
ローマ数字をアラビア数字に変換します。機種依存文字(環境依存文字)ではなくアルファベットで指定してください。アラビア数字をローマ数字に変換するにはROMAN関数 (自作関数)を使用します。
- 構文
- 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)
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 |
使い方
ローマ数字をアラビア数字に変換します。
DIM array[] = "IX", "XXIV", "LI", "LXXXIV", "CIV", "CDXCV", "DCLVIII", "MCCL", "MMDCLXXXIV", "MMMCMXLV"
FOR item IN array
PRINT item + "," + ARABIC(item)
NEXT
- 結果
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関数 (スクリプト関数)
- 引数の絶対値を求めます。