Number to Words

Versión 3.6.2 (41.5 KB) por Stephen23
Convert a numeric to a string with the English name of the number value (GB/IN/US).

2.3K descargas

Actualizado 31 Jan 2022

Ver licencia

Nota del editor: 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
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('uint64'), 'sigfig',3, 'comma',false)
ans = 'eighteen quintillion four hundred quadrillion'
>> num2words(intmax('uint64'), 'sigfig',3, 'type','highest')
ans = 'eighteen point four quintillion'
>> num2words(intmax('uint64'), 'sigfig',3, 'scale','long')
ans = 'eighteen trillion, four hundred thousand billion'
>> num2words(intmax('uint64'), 'sigfig',3, 'case','title', 'scale','indian')
ans = 'One Lakh, Eighty-Four Thousand Crore Crore'
>> num2words(intmax('uint64'), 'order',17, 'case','upper', 'scale','knuth')
ans = 'EIGHTEEN HUNDRED FORTY BYLLION'
>> 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'
% Try these at home!
>> 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'))

Citar como

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

Compatibilidad con la versión de MATLAB
Se creó con R2010b
Compatible con cualquier versión desde R2009b
Compatibilidad con las plataformas
Windows macOS Linux

Community Treasure Hunt

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

Start Hunting!
Versión Publicado Notas de la versión
3.6.2

* Update description.

3.6.1

* Revise title and summary

3.6.0

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

3.5.1

* Add error IDs.

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".
* Add published HTML documentation.
* Add HTML directory

3.2.0.0

* Improve documentation.
* Consistent internal variable names.

3.1.0.0

* Update license.

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

* Add a new <scale> option <myriad> (Knuth's -yllion).
* 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

* Add money/cheque number type.
* 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

- Downloadable as toolbox

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