Main Content

str2double

Convert strings to double precision values

Description

Note

Calling string and then double is recommended over str2double because it provides greater flexibility and allows vectorization. For additional information, see Alternative Functionality.

X = str2double(str) converts the text in str to double precision values. str contains text that represents real or complex numeric values. str can be a character vector, a cell array of character vectors, or a string array. If str is a character vector or string scalar, then X is a numeric scalar. If str is a cell array of character vectors or a string array, then X is a numeric array that is the same size as str.

Text that represents a number can contain digits, a comma (thousands separator), a decimal point, a leading + or - sign, an e preceding a power of 10 scale factor, and an i or a j for a complex unit. You cannot use a period as a thousands separator, or a comma as a decimal point.

If str2double cannot convert text to a number, then it returns a NaN value.

example

Examples

collapse all

Convert character vectors that represent numbers to double precision values. You can also convert a cell array of character vectors to a numeric array of the same size.

Convert a character vector to a real number.

X = str2double('3.1416')
X = 
3.1416

Convert a character vector when it represents a number using exponential notation.

X = str2double('2.998e8')
X = 
299800000

Convert a character vector that uses a comma as the thousands separator.

X = str2double('1,200.34')
X = 
1.2003e+03

Convert a character vector to a complex number.

X = str2double('3.14 + 2.7i')
X = 
3.1400 + 2.7000i

Convert a cell array of character vectors to a numeric array.

str = {'2.718','3.1416';
       '137','0.015'};
X = str2double(str)
X = 2×2

    2.7180    3.1416
  137.0000    0.0150

You can convert text to numbers using the str2double function.

Create a string that represents a number. Convert it to a numeric scalar.

str = "81470.5"
str = 
"81470.5"
X = str2double(str)
X = 
8.1470e+04

Create a string array representing numbers. Convert it to a numeric array that is the same size.

str = ["292.1" "139.44" ".241" "0" "100.245"]
str = 1x5 string
    "292.1"    "139.44"    ".241"    "0"    "100.245"

X = str2double(str)
X = 1×5

  292.1000  139.4400    0.2410         0  100.2450

Input Arguments

collapse all

Text that represents numbers, specified as a character vector, a cell array of character vectors, or a string array.

Alternative Functionality

Update code that makes use of str2double to use string and then double instead. Using double to convert a char array produces an array of the corresponding Unicode® values. Text in strings does not convert in this way. For example:

Not RecommendedRecommended
x = str2double('13')
x =

    13
x = double(string('13'))
x =

    13

Extended Capabilities

Version History

Introduced before R2006a