Es gibt verschiedene Umrechnungsmethoden, dazu einige Beispiele:
1990 = MCMXC = MXM
1950 = MCML = MLM
1995 = MCMXCV = MVM = MCMVC
Die beiden Funktionen berechnen die lange und die kürzeste Schreibweise.
Funktions-Demo
Das folgende Formular demonstriert die Wirkung der Funktion.
Code
<SCRIPT LANGUAGE="JavaScript1.1" TYPE="text/javascript"><!--
function ArabischInRoemischLang(ArabischeZahl)
{ // Erstellt von Ralf Pfeifer (www.arstechnica.de)
/* Konstante und Variable definieren */
var EinheitRoemisch = new Array( "M","CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I");
var EinheitArabisch = new Array(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
var ArabischeZahl = parseInt(ArabischeZahl); // Umwandeln der Eingabe in eine Ganzzahl
var RoemischeZahl = "";
if (isNaN(ArabischeZahl) || (ArabischeZahl <= 0)) { return "Fehler"; }
for (var Nr = 0; Nr < EinheitArabisch.length; Nr++)
while (ArabischeZahl >= EinheitArabisch[Nr])
{
RoemischeZahl += EinheitRoemisch[Nr];
ArabischeZahl -= EinheitArabisch[Nr];
}
return RoemischeZahl;
}
function ArabischInRoemischKurz(ArabischeZahl)
{ // Erstellt von Ralf Pfeifer (www.arstechnica.de)
/* Konstante und Variable definieren */
var EinheitRoemisch = new Array( "M", "D", "C", "L", "X", "V", "I");
var EinheitArabisch = new Array(1000, 500, 100, 50, 10, 5, 1);
var ArabischeZahl = parseInt(ArabischeZahl); // Umwandeln der Eingabe in eine Ganzzahl
var RoemischeZahl = "", Pos, Wert;
if (isNaN(ArabischeZahl) || (ArabischeZahl <= 0)) { return "Fehler"; }
for (var Nr = 0; Nr < EinheitArabisch.length; Nr++)
{
while (ArabischeZahl >= EinheitArabisch[Nr])
{
RoemischeZahl += EinheitRoemisch[Nr];
ArabischeZahl -= EinheitArabisch[Nr];
}
for (Pos = EinheitArabisch.length; Pos > Nr; Pos--)
{
Wert = EinheitArabisch[Nr] - EinheitArabisch[Pos];
if ((EinheitArabisch[Pos] < Wert) && ( Wert <= ArabischeZahl))
{
RoemischeZahl += EinheitRoemisch[Pos] + EinheitRoemisch[Nr];
ArabischeZahl -= Wert;
}
}
}
return RoemischeZahl;
} // -->
</SCRIPT>