CodeItBetter Programming Another VB Programming Blog

How to Convert a decimal number into a Roman number?

Posted on January 5, 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'Math - How to Convert a decimal number into a Roman number?

Option Explicit
 
Public Function fRoman(ByVal intValue As Integer) As String
    'Convert a decimal number between 1 and 3999 into a Roman number.
    Dim vDigits As Variant
    Dim iPos As Integer
    Dim iDigit As Integer
    Dim sTemp As String
 
    'Build up the array of roman digits
    vDigits = Array("I", "V", "X", "L", "C", "D", "M")
    iPos = LBound(vDigits)
    sTemp = ""
    Do While intValue > 0
        iDigit = intValue Mod 10
        intValue = intValue \ 10
        Select Case iDigit
        Case 1
            sTemp = vDigits(iPos) & sTemp
        Case 2
            sTemp = vDigits(iPos) & vDigits(iPos) & sTemp
        Case 3
            sTemp = vDigits(iPos) & vDigits(iPos) & vDigits(iPos) & sTemp
        Case 4
            sTemp = vDigits(iPos) & vDigits(iPos + 1) & sTemp
        Case 5
            sTemp = vDigits(iPos + 1) & sTemp
        Case 6
            sTemp = vDigits(iPos + 1) & vDigits(iPos) & sTemp
        Case 7
            sTemp = vDigits(iPos + 1) & vDigits(iPos) & vDigits(iPos) & sTemp
        Case 8
            sTemp = vDigits(iPos + 1) & vDigits(iPos) & vDigits(iPos) & vDigits(iPos) & sTemp
        Case 9
            sTemp = vDigits(iPos) & vDigits(iPos + 2) & sTemp
        End Select
        iPos = iPos + 2
    Loop
    fRoman = sTemp
End Function
'How can I call this function:
'
'Debug.Print fRoman(123) 'Will return "CXXIII"
Filed under: Math Leave a comment
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


 

No trackbacks yet.