soz - here's the proper one with variables declared properly n stuff:

/**
* Converts a number to Roman numerals.
* 
* @param numVar  Number you want converted to Roman numerals. 
* @return Returns a string. 
* @author Rich Wild ([EMAIL PROTECTED]) 
* @version 1, December 6, 2002 
*/
function numeralise(numVar) {
        var bits_a = listtoarray("M");
        var bits_b = listtoarray("X,XX,XXX,XL,L,LX,LXX,LXXX,XC");
        var bits_c =
listtoarray("I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII,XIII,XIV,XV,XVI,XVII,XVII
I,XIX");
        var strNum = "";        
        var thousands = 0;
        var hundreds = 0;
        var tens = 0;
        
        if (NOT isNumeric(numvar)) {
                return 'NaN';
        } else if (NOT numvar) {
                return 'Zero';
        } else {
                                
                numvar = abs(numvar);                   
                thousands = int(numvar/1000);                   
                if (thousands) {
                        strNum = strNum & repeatstring('M', thousands);
                }                       
                remaining = numvar mod 1000;                    
                if (remaining) {
                        hundreds = int(remaining/100);

                        if (hundreds) {
                                if (hundreds eq 9) {
                                        strNum = strNum & 'CM';
                                } else {
                                        strNum = strNum & repeatString('C',
hundreds);
                                }
                        }                               
                        remaining = remaining mod 100;

                        if (NOT remaining) {
                                return strNum;
                        } else {
                                tens = int(remaining/10);

                                if (tens gte 2) {
                                        strNum = strNum & bits_b[tens];

                                        remaining = remaining mod 10;

                                        if (NOT remaining) {
                                                return strNum;
                                        } else {
                                                strNum = strNum &
bits_c[remaining];
                                                return strNum;
                                        }

                                } else {
                                        strNum = strNum & bits_c[remaining];
                                        return strNum;
                                }
                        }                               
                } else {
                        return strNum;
                }                       
        }
}

> -----Original Message-----
> From: Rich Wild [mailto:[EMAIL PROTECTED]]
> Sent: 06 December 2002 16:24
> To: '[EMAIL PROTECTED]'
> Subject: [ cf-dev ] slow friday
> 
> 
> Its a slow friday and everything seems to be at bid stage, so 
> I'm trying to
> find random things to do.
> 
> In so doing, I tried to create a new UDF that converts 
> numbers into roman
> numerals, but does it quicker than the existing UDF in cflib.org:
> RomanFormat() http://www.cflib.org/udf.cfm?ID=475
> 
> here it is, in the unlikely case that any of you should 
> require it (watch
> out for wrappage):
> 
> <cfscript>
> /**
> * Converts a number to Roman numerals.
> * 
> * @param numVar        Number you want converted to Roman numerals. 
> * @return Returns a string. 
> * @author Rich Wild ([EMAIL PROTECTED]) 
> * @version 1, December 6, 2002 
> */
> function numeralise(numVar) {
>       var bits_a = listtoarray("M");
>       var bits_b = listtoarray("X,XX,XXX,XL,L,LX,LXX,LXXX,XC");
>       var bits_c =
> listtoarray("I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII,XIII,XIV,XV
> ,XVI,XVII,XVII
> I,XIX");
>       
>       if (NOT isNumeric(numvar)) {
>               return 'NaN';
>       } else if (NOT numvar) {
>               return 'Zero';
>       } else {
>               var strNum = "";                        
>               numvar = abs(numvar);                   
>               var thousands = int(numvar/1000);                       
>               if (thousands) {
>                       strNum = strNum & repeatstring('M', thousands);
>               }                       
>               var remaining = numvar mod 1000;                        
>               if (remaining) {
>                       var hundreds = int(remaining/100);
> 
>                       if (hundreds) {
>                               if (hundreds eq 9) {
>                                       strNum = strNum & 'CM';
>                               } else {
>                                       strNum = strNum & 
> repeatString('C',
> hundreds);
>                               }
>                       }                               
>                       remaining = remaining mod 100;
> 
>                       if (NOT remaining) {
>                               return strNum;
>                       } else {
>                               var tens = int(remaining/10);
> 
>                               if (tens gte 2) {
>                                       strNum = strNum & bits_b[tens];
> 
>                                       remaining = remaining mod 10;
> 
>                                       if (NOT remaining) {
>                                               return strNum;
>                                       } else {
>                                               strNum = strNum &
> bits_c[remaining];
>                                               return strNum;
>                                       }
> 
>                               } else {
>                                       strNum = strNum & 
> bits_c[remaining];
>                                       return strNum;
>                               }
>                       }                               
>               } else {
>                       return strNum;
>               }                       
>       }
> }
> </cfscript>
> 
> 
> 
> 
> <cfoutput>#numeralise(1966)#</cfoutput>
> 
> -------------------------------------------------------
> Rich Wild
> Senior Web Developer
> 
> -------------------------------------------------------
> e-mango                       Tel: 01202 755 300
> Gild House                      Fax: 01202 755 301
> 74 Norwich Avenue West
> Bournemouth                   Mailto:[EMAIL PROTECTED]
> BH2 6AW, UK                      http://www.e-mango.com
> -------------------------------------------------------
> This message may contain information which is legally
> privileged and/or confidential.  If you are not the
> intended recipient, you are hereby notified that any
> unauthorised disclosure, copying, distribution or use
> of this information is strictly prohibited. Such
> notification notwithstanding, any comments, opinions,
> information or conclusions expressed in this message
> are those of the originator, not of e-mango.com ltd,
> unless otherwise explicitly and independently indicated
> by an authorised representative of e-mango.com ltd.
> -------------------------------------------------------
> 
> 
> -- 
> ** Archive: http://www.mail-archive.com/dev%40lists.cfdeveloper.co.uk/
> 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> For human help, e-mail: [EMAIL PROTECTED]
> 


-- 
** Archive: http://www.mail-archive.com/dev%40lists.cfdeveloper.co.uk/

To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
For human help, e-mail: [EMAIL PROTECTED]

Reply via email to