//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'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(); } } }