Roman 1.1.0

Roman 1.1.0

LangLanguage SwiftSwift
License MIT
ReleasedLast Release Jan 2016
SPMSupports SPM

Maintained by Nikolai Vazquez.

Roman 1.1.0

  • By
  • Nikolai Vazquez

Roman Banner


Roman is a Swift framework that allows for seamless Roman numeral conversion.



  • Platforms:
    • OS X
    • iOS
    • watchOS
    • tvOS
    • Linux

  • Language:
    • Swift 2.1+

Install Using Swift Package Manager

The Swift Package Manager is a decentralized dependency manager for Swift.

  1. Add the project to your Package.swift.

    import PackageDescription
    let package = Package(
        name: "MyAwesomeProject",
        dependencies: [
            .Package(url: "",
                     majorVersion: 1)
  2. Import the Roman module.

    import Roman

Install Manually

Simply add the Roman.swift file into your project.



A Roman numeral string can be created from an instance of a type that conforms to IntegerType.

String(roman: 1478)  // "MCDLXXVIII"
String(roman: 2743)  // "MMDCCXLIII"
String(roman: 1226)  // "MCCXXVI"
String(roman: 0)     // nil
String(roman: -42)   // nil


All types that conform to IntegerType can be initialized from a Roman numeral string.

The input string is case insensitive.

Int(roman: "III")  // 3
Int(roman: "MIV")  // 1004
Int(roman: "CdV")  // 405

Roman even supports irregular numerals that don’t use a short form.

Each of the following evaluates to true:

Int(roman: "IV") == Int(roman: "IIII")
Int(roman: "XX") == Int(roman: "VVVV")
Int(roman: "CD") == Int(roman: "CCCC")

Invalid strings return nil.

Int(roman: "hello") == nil
Int(roman: "IIIXX") == nil
Int(roman: "XYZ")   == nil


All types that conform to FloatingPointType can be initialized from a Roman numeral string.

Creating instances from Roman numerals works the same way as with IntegerType.


Roman is released under the MIT License.

All assets are released under the Creative Commons Attribution-ShareAlike 4.0 International License and can be found in the Assets folder.