Number to Words

版本 4.1.1 (46.0 KB) 作者: Stephen23
Convert a numeric to a string with the English name of the number value (GB/IN/US).

2.4K 次下载

更新时间 2023/5/13


编者注: 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 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 values greater than zero.
  • the numbering scale: short / long / Indian / Peletier / Rowlett / yllion.
  • currency unit names (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
>> 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')
>> 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'))


Stephen23 (2023). Number to Words (, MATLAB Central File Exchange. 检索来源 .

MATLAB 版本兼容性
创建方式 R2010b
与 R2009b 及更高版本兼容
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!
版本 已发布 发行说明

* option parsing improvements.
* add format reference.


* Faster option parsing.
* Add more testcases.


* Improve option parsing.


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


* Update description.


* Revise title and summary


* Accepts string or char vector input arguments.
* Add testcases.


* Add error IDs.


* Improve options handling.

* Check for cell array optional inputs.

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

* Improve documentation.
* Consistent internal variable names.

* Update license.

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

* Simplify cell array creation.

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

* Add a new <scale> option <myriad> (Knuth's -yllion).
* Rename option <ae> as <and>.

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

- Minor edit in blurb.

- Minor edit to FEX blurb.

* Add money/cheque number type.
* Allow options to be supplied as name-value pairs.

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

* 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.

- Downloadable as toolbox

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

- Improve decimal fraction handling.
- Improve input checking.