Numeric Words Conversion

Build Unit Tests

Numeric Words Conversion is a C# library for converting numeric into words. The goal is to create a simple customizable library which can easily be used to convert any numbers or currencies to words.

Usage

For Numeric

decimal amount = 100000.12;
NumericWordsConverter converter = new NumericWordsConverter();
string words = converter.ToWords(amount)
//OR SIMPLY
string words = amount.ToNumericWords();
//Outputs: One hundred thousand point one two

For Currency

Supports Nepali, Hindi and International currency system out of the box. By default, uses International currency system.

decimal amount = 100000.12;
CurrencyWordsConverter converter = new CurrencyWordsConverter();
string words = converter.ToWords(amount)
//OR SIMPLY
string words = amount.ToCurrencyWords();
//Outputs: One hundred thousand dollar and twelve cents only

And you can customize it as you like by passing the options parameter

CurrencyWordsConverter converter = new CurrencyWordsConverter(new CurrencyWordsConversionOptions()
            {
                Culture = Culture.Nepali,
                OutputFormat = OutputFormat.English
            });
string words = converter.ToWords(100000.12M);
//Outputs: One lakh rupees and twelve paisa only

You can even specify your own currency units and fully customize it your own way.

CurrencyWordsConverter converter = new CurrencyWordsConverter(new CurrencyWordsConversionOptions()
            {
                Culture = Culture.International,
                OutputFormat = OutputFormat.English,
                CurrencyUnitSeparator = string.Empty,
                CurrencyUnit = "pound",
                SubCurrencyUnit = "pence",
                EndOfWordsMarker = ""
            });
string words = converter.ToWords(00000.12M);
//Outputs: One hundred thousand pound twelve pence

Need single conversion options through out the application? You can override the default options as desired. Just use the following code in startup file of the project

NumericWordsConfiguration.ConfigureConversionDefaults(options =>
            {
            //For Numeric Words Conversion
                options.SetDefaultNumericWordsOptions(new NumericWordsConversionOptions
                {
                    Culture = Culture.International,
                    DecimalSeparator = "dot",
                    DecimalPlaces = 2
                });
            });
            //For Currency Words Conversion
                options.SetDefaultCurrencyWordsOptions(new CurrencyWordsConversionOptions
                {
                    Culture = Culture.Nepali,
                    OutputFormat = OutputFormat.English,
                    CurrencyUnitSeparator = "and",
                    CurrencyUnit = "rupee",
                    CurrencyNotationType = NotationType.Prefix,
                    SubCurrencyUnit = "paisa",
                    EndOfWordsMarker = "and"
                });

And simply use the extension method anywhere in the application, as

decimal amount = 100000.01M;
amount.ToNumericWords(); //Outputs: One hundred thousand dot zero one.
amount.ToCurrencyWords(); //Outputs: Rupees one lakh and one paisa.

License

Under GNU GENERAL PUBLIC LICENSE V3