romanToDecimal(input)
Last updated February 4, 2010
Version: 2 | Requires: ColdFusion 5 | Library: StrLib
Description:
Converts Roman numerals to decimal. Assumes a valid ROman numeral.
Return Values:
Returns a number.
Example:
<cfloop index="input" list="#inputs#">
<cfoutput>
#input#=#romantodec(input)#<br/>
</cfoutput>
</cfloop>
Parameters:
| Name | Description | Required |
|---|---|---|
| input | Roman number input. | Yes |
Full UDF Source:
<cfscript>
/**
* Converts Roman numerals to decimal.
* v2 fix by for non standard things like IIX, fix done by Gary Funk
*
* @param input Roman number input. (Required)
* @return Returns a number.
* @author Raymond Camden (ray@camdenfamily.com)
* @version 2, February 4, 2010
*/
function romantodec(input) {
var romans = {};
var result = 0;
var pos = 1;
var char = "";
var thisSum = "";
var nextchar = "";
var subSum = 0;
romans["I"] = 1;
romans["V"] = 5;
romans["X"] = 10;
romans["L"] = 50;
romans["C"] = 100;
romans["D"] = 500;
romans["M"] = 1000;
while(pos lte len(input)) {
char = mid(input, pos, 1);
subSum += romans[char];
if(pos != len(input)) {
nextchar = mid(input, pos + 1, 1);
if(romans[char] == romans[nextchar]) {
pos++;
} else if(romans[char] < romans[nextchar]) {
result = result + romans[nextchar] - subSum;
subSum = 0;
pos += 2;
} else {
result = result + subSum;
subSum = 0;
pos++;
}
} else {
result = result + subSum;
pos++;
}
}
return result;
}
</cfscript>
Search CFLib.org
Latest Additions
Shawn Porter added
DeMoronize
3 hour(s) ago
Chris Carey added
readPropertiesFi...
1 day(s) ago
Randy Johnson added
lastDayofWeek
3 day(s) ago
Frank Marion added
sitemapPing
7 day(s) ago
Top Rated
QuickSort
Rated 5.0, 3 time(s)
indentXml
Rated 5.0, 3 time(s)
queryColumnsToSt...
Rated 5.0, 3 time(s)
generateSsccAsn
Rated 5.0, 3 time(s)