File Exchange

image thumbnail

Words to Number

version 2.1.0 (35.3 KB) by Stephen Cobeldick
Convert English number name/s in a string to numeric value/s (GB/US).

3 Downloads

Updated 09 Jul 2020

View Version History

View License

WORDS2NUM converts a string with number value/s given in English words to a numeric vector: for example the string 'one thousand and twenty-four' is returned as the scalar numeric 1024. WORDS2NUM accepts a string containing zero or more number substrings, and returns a numeric vector with one element for each detected number substring. Options allows the user to select:

* the output numeric vector's class: double, single, uintX or intX.
* upper / lower / title / sentence case.
* the use of spaces between words.
* 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).
* whitespace character/s
* the numbering scale: short / long / Peletier / Rowlett / Knuth (-yllion).

### Bonus Functions / Scripts ###

* WORDS2NUM_TEST contains thousands of test cases.
* WORDS2NUM_DEMO compares the output of WORDS2NUM against real-world examples.

### Reverse Conversion ###

http://www.mathworks.com/matlabcentral/fileexchange/47221-number-to-words

### Examples ###

>> words2num('zero')
ans = 0

>> words2num('One Thousand and TWENTY-four')
ans = 1024
>> words2num('One_Thousand_and_TWENTY-four', 'white','_')
ans = 1024
>> words2num('One Thousand and TWENTY-four', 'case','lower')
ans = 4
>> words2num('One Thousand and TWENTY-four', 'case','upper')
ans = 20
>> words2num('One Thousand and TWENTY-four', 'case','title')
ans = 1000
>> words2num('One Thousand and TWENTY-four', 'hyphen',false)
ans = [1020,4]
>> words2num('One Thousand and TWENTY-four', 'and',false)
ans = [1000,24]
>> words2num('One Thousand and TWENTY-four', 'suffix','-')
ans = 1020

>> [num,spl] = words2num('Negative thirty-two squared is one thousand and twenty-four.')
num = [-32,1024]
spl = {'',' squared is ','.'}

>> [num,spl] = words2num('one hundred and twenty-three pounds and forty-five pence')
num = [123,45]
spl = {'',' pounds and ',' pence'}

>> [num,spl] = words2num('pi=threepointonefouronefiveninetwosixfivethreefiveeight')
num = 3.14159265358
spl = {'pi=',''}

>> [num,spl] = words2num('One Hundred and One Dalmatians')
num = 101
spl = {'',' Dalmatians'}

>> words2num('one hundred and seventy-nine uncentillion')
ans = 1.79e+308
>> words2num('one hundred and eighty uncentillion') % >realmax
ans = Inf
>> words2num('one hundred and eighty uncentillion', 'class','int64')
ans = +9223372036854775807
>> words2num(num2words(intmin('int64')),'class','int64')
ans = -9223372036854775808

>> words2num('one point zero zero two zero zero three trillion')
ans = 1002003000000
>> words2num('one trillion, two billion, three million')
ans = 1002003000000
>> words2num('one trillion, two billion three million', 'comma',true, 'and',true)
ans = [1002000000000,3000000]
>> words2num('one trillion, two billion three million', 'comma',false)
ans = [1000000000000,2003000000]
>> words2num('one million million', 'mag','compound')
ans = 1000000000000

>> words2num('one billion', 'scale','short')
ans = 1000000000
>> words2num('one thousand million', 'scale','long')
ans = 1000000000
>> words2num('one milliard', 'scale','peletier')
ans = 1000000000
>> words2num('one gillion', 'scale','rowlett')
ans = 1000000000
>> words2num('ten myllion', 'scale','knuth')
ans = 1000000000

>> words2num('Negative Infinity')
ans = -Inf
>> words2num('Not-a-Number')
ans = NaN

Cite As

Stephen Cobeldick (2020). Words to Number (https://www.mathworks.com/matlabcentral/fileexchange/52925-words-to-number), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (0)

MATLAB Release Compatibility
Created with R2010b
Compatible with R2009a 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!