# Number to Words

Version 4.1.4 (47.2 KB) by
Convert a numeric to a string with the English name of the number value (GB/IN/US).
Updated 8 Feb 2024

Editor's Note: This file was selected as MATLAB Central Pick of the Week

NUM2WORDS converts a numeric scalar to text with the number value written in English words: for example the numeric scalar 1024 is returned as the text 'one thousand and twenty-four'. NUM2WORDS accepts a scalar of any standard numeric class: single, double, intX, or uintX. Integer types are parsed with their full precision, while floating types have internal precision limits to ensure the least-unexpected output. Options allows the user to select:
• the output class: char or string.
• the number type selection: ordinal / decimal / cheque / money / highest magnitude.
• the number of significant digits or order-of-magnitude.
• upper / lower / title / sentence case.
• trailing zeros or without.
• the use of a comma between magnitude groups.
• the use of a hyphen between tens and ones.
• the use of 'and' before the tens/ones (required in British and Commonwealth English).
• a 'positive' prefix for non-negative values.
• the numbering scale: short / long / Indian / Peletier / Rowlett / yllion.
• currency unit names, e.g. Pound, Pence, Dollar, Cents, Rupees, etc.
Bonus Functions / Scripts
• NUM2WORDS_TEST contains thousands of test cases.
• NUM2WORDS_DEMO compares the output of NUM2WORDS against real-world examples.
• NUM2WORDS_RAT converts a numeric to a string with an improper fraction in words.
Reverse Conversion
Examples
>> num2words(0)
ans = 'zero'
>> num2words(1024)
ans = 'one thousand and twenty-four'
>> num2words(-1024)
ans = 'negative one thousand and twenty-four'
>> num2words(1024, 'pos',true, 'case','title', 'hyphen',false)
ans = 'Positive One Thousand and Twenty Four'
>> num2words(1024, struct('type','ordinal', 'case','sentence'))
ans = 'One thousand and twenty-fourth'
>> num2words(1024, 'and',false, 'order',1) % round to the tens.
ans = 'one thousand twenty'
>> num2words(pi, 'order',-10) % round to tenth decimal digit
ans = 'three point one four one five nine two six five three six'
>> num2words(intmax('uint32'), 'sigfig',4, 'type','highest')
ans = 'four point two nine five billion'
>> num2words(intmax('uint32'), 'sigfig',4, 'comma',false)
ans = 'four billion two hundred and ninety-five million'
>> num2words(intmax('uint32'), 'sigfig',4, 'scale','long')
ans = 'four thousand, two hundred and ninety-five million'
>> num2words(intmax('uint32'), 'sigfig',4, 'case','title', 'scale','indian')
ans = 'Four Arab, Twenty-Nine Crore, Fifty Lakh'
>> num2words(intmax('uint32'), 'order',6, 'case','upper', 'scale','yllion')
ans = 'FORTY-TWO MYLLION NINETY-FIVE HUNDRED MYRIAD'
>> num2words(1234.56, 'type','cheque', 'unit','Euro')
ans = 'one thousand, two hundred and thirty-four euro and fifty-six cents'
>> num2words(1234.56, 'type','cheque', 'unit','Pound|', 'subunit','Penny|Pence')
ans = 'one thousand, two hundred and thirty-four pounds and fifty-six pence'
>> num2words(101, 'type','money', 'unit','Dalmatian|', 'case','title')
>> num2words(1001, 'type','money', 'unit','Night|', 'case','title')
>> sprintf('%s Under the Sea',num2words(2e4, 'type','money', 'unit','League|', 'case','title'))

### Cite As

Stephen23 (2024). Number to Words (https://www.mathworks.com/matlabcentral/fileexchange/47221-number-to-words), MATLAB Central File Exchange. Retrieved .

##### MATLAB Release Compatibility
Created with R2010b
Compatible with R2009b and later releases
##### Platform Compatibility
Windows macOS Linux

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
4.1.4

* Documentation improvements.

4.1.3

4.1.2

4.1.1

* option parsing improvements.

4.1.0

* Faster option parsing.

4.0.1

* Improve option parsing.

4.0.0

* Major code refactoring.
* Indian scale up to Shankh.
* Add 2nd output: options structure.
* More testcases.

3.6.2

* Update description.

3.6.1

* Revise title and summary

3.6.0

* Accepts string or char vector input arguments.

3.5.1

3.5.0

* Improve options handling.

3.4.0.0

* Check for cell array optional inputs.

3.3.0.0

* Include HTML _DOC file in zip.
* Change HTML documentation filename.
* Rename "myriad" scale to "knuth".

3.2.0.0

* Improve documentation.
* Consistent internal variable names.

3.1.0.0

3.0.0.0

* Add 'india' number scale (lakh and crore).
* Fix bugs in rounding of integer class numerics (for large sigfigs).

2.2.0.0

* Simplify cell array creation.

2.1.0.0

* Fix bug in myriad parsing (if >1 highest level multiplier).
* More robust fraction handling for all number scales.
* Smaller file-size.

2.0.0.0

* Rename option <ae> as <and>.

1.9.0.0

* More robust handling of some edge cases: zero, NaN, Inf.
* Fraction function accepts name-value or structure input arguments.

1.8.0.0

- Minor edit in blurb.

1.7.0.0

- Minor edit to FEX blurb.

1.6.0.0

* Allow options to be supplied as name-value pairs.

1.5.0.0

- I accidentally uploaded an older version. This version matches the online description :)

1.4.0.0

* comma control option.
* scale control option (short, long, Rowlett, Peletier).
* all names upto realmax.
* limit significant figures for floats.
* remove option <cardinal>.
* change option value 'ame' -> 'ae'.
* option fields case insensitive.

1.3.0.0

1.2.0.0

- Fix bug for ordinals 'first' and 'second'.
- Expand options table with more examples.

1.1.0.0

- Improve decimal fraction handling.
- Improve input checking.

1.0.0.0