Converts an integer into a roman numeral.

image_pdfimage_print
   
 
//http://advancementvoyage.codeplex.com/
//Microsoft Public License (Ms-PL)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AdvancementVoyage.Magic.Utility
{
    /// <summary>
    /// Extension methods for the int type.
    /// </summary>
    public static class IntExtensions
    {
        /// <summary>
        /// Converts an integer into a roman numeral.
        /// </summary>
        /// <param name="number">
        /// The number being transformed.
        /// </param>
        /// <returns>
        /// A string representation of the number&#039;s corresponding roman numeral.
        /// </returns>
        public static string ToRomanNumeral(this int number)
        {

            var retVal = new StringBuilder(5);
            var valueMap = new SortedDictionary<int, string>
                               {
                                   { 1, "I" },
                                   { 4, "IV" },
                                   { 5, "V" },
                                   { 9, "IX" },
                                   { 10, "X" },
                                   { 40, "XL" },
                                   { 50, "L" },
                                   { 90, "XC" },
                                   { 100, "C" },
                                   { 400, "CD" },
                                   { 500, "D" },
                                   { 900, "CM" },
                                   { 1000, "M" },
                               };

            foreach (var kvp in valueMap.Reverse())
            {
                while (number >= kvp.Key)
                {
                    number -= kvp.Key;
                    retVal.Append(kvp.Value);
                }
            }

            return retVal.ToString();
        }
    }
}

   
     


This entry was posted in Data Types. Bookmark the permalink.