Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to convert numbers to roman numerals
Message
De
03/03/2005 07:51:14
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivie
 
 
À
03/03/2005 02:28:44
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 6 SP5
OS:
Windows '98
Database:
Visual FoxPro
Divers
Thread ID:
00992284
Message ID:
00992346
Vues:
31
>1 = I
>2 = II
>3 = III
>etc
>
>TIA.

I didn't find anything in the download section, but it is easy to create a UDF for this purpose.

I just created the following function, with a range from 1-999. That should be enough for most purposes.
function Roman(tnNumber)
* Convert a number to a roman number
do case
case tnNumber # int(tnNumber) && not an integer
  return "*** Not an integer ***"
case not between(tnNumber, 1, 999) && Currently, the scope is 1-999
  return "*** Out of scope ***"
endcase
local lnHundreds, lnTens, lnOnes, lnRemainder, lcHundreds, lcTens, lcOnes
lnHundreds = int(tnNumber / 100)
lnRemainder = tnNumber - lnHundreds * 100
lnTens = int(lnRemainder / 10)
lnOnes = lnRemainder - lnTens * 10
do case
case lnHundreds = 0
	lcHundreds = ""
case lnHundreds = 1
	lcHundreds = "C"
case lnHundreds = 2
	lcHundreds = "CC"
case lnHundreds = 3
	lcHundreds = "CCC"
case lnHundreds = 4
	lcHundreds = "CD"
case lnHundreds = 5
	lcHundreds = "D"
case lnHundreds = 6
	lcHundreds = "DC"
case lnHundreds = 7
	lcHundreds = "DCC"
case lnHundreds = 8
	lcHundreds = "DCCC"
case lnHundreds = 9
	lcHundreds = "CM"
endcase

do case
case lnTens = 0
	lcTens = ""
case lnTens = 1
	lcTens = "X"
case lnTens = 2
	lcTens = "XX"
case lnTens = 3
	lcTens = "XXX"
case lnTens = 4
	lcTens = "XL"
case lnTens = 5
	lcTens = "L"
case lnTens = 6
	lcTens = "LX"
case lnTens = 7
	lcTens = "LXX"
case lnTens = 8
	lcTens = "LXXX"
case lnTens = 9
	lcTens = "XC"
endcase

do case
case lnOnes = 0
	lcOnes = ""
case lnOnes = 1
	lcOnes = "I"
case lnOnes = 2
	lcOnes = "II"
case lnOnes = 3
	lcOnes = "III"
case lnOnes = 4
	lcOnes = "IV"
case lnOnes = 5
	lcOnes = "V"
case lnOnes = 6
	lcOnes = "VI"
case lnOnes = 7
	lcOnes = "VII"
case lnOnes = 8
	lcOnes = "VIII"
case lnOnes = 9
	lcOnes = "IX"
endcase

return lcHundreds + lcTens + lcOnes
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform