double is the default numeric data type (class) in
MATLAB®, providing sufficient precision for most computational tasks. Numeric
variables are automatically stored as 64-bit (8-byte) double-precision floating-point
values. For example:
x = 10; whos x
Name Size Bytes Class Attributes x 1x1 8 double
MATLAB constructs the
double data type according to
IEEE® Standard 754 for double precision. The range for a negative number of type
double is between -1.79769 x 10308 and
-2.22507 x 10-308, and the range for positive numbers is
between 2.22507 x 10-308 and 1.79769 x
For more information on double- and single-precision floating-point values, see Floating-Point Numbers.
You create a double-precision array automatically when you assign a numeric scalar or
array to a variable, such as
A = [1 2 3; 4 5 6]. The variable
A has type
double. For more information on
creating and combining arrays, see Creating, Concatenating, and Expanding Matrices. In addition, operations on double-precision variables and functions with
double-precision input typically return double-precision values, such as
If you have an array of a different data type, such as
int8, then you can convert that array to double precision using
double function, which then stores the array with more precision
for further computations.
X— Input array
Input array, specified as a scalar, vector, matrix, or multidimensional array.
By default, numbers in MATLAB are of the data type
double. You can use the
class function to verify a variable's type.
x = 100; xtype = class(x)
xtype = 'double'
double function to convert variables that are not double precision to type
y = true
y = logical 1
ydouble = double(y); ynewtype = class(ydouble)
ynewtype = 'double'
Compare the ranges of numeric values in double-precision to the ranges for single-precision.
realmax functions to display the minimum and maximum positives values that can be represented in double precision.
doublemin = realmin('double')
doublemin = 2.2251e-308
doublemax = realmax('double')
doublemax = 1.7977e+308
Now display the minimum and maximum positive values that can be represented in single precision. The range of values is smaller compared to double-precision, but requires less memory.
singlemin = realmin('single')
singlemin = single 1.1755e-38
singlemax = realmax('single')
singlemax = single 3.4028e+38
eps function returns a measure of how close numbers can be in double-precision versus single-precision. Display the distance from the number 1.0 to the next larger double-precision number.
doubleeps = eps('double')
doubleeps = 2.2204e-16
Now display the distance from 1.0 to the next larger single-precision number. Double-precision values are closer to each other, since you can represent more of them.
singleeps = eps('single')
singleeps = single 1.1921e-07
When you are creating a class, overload
double when it
makes sense to convert an object of that class to a double-precision
char array to
a numeric type will produce an array of the corresponding Unicode® code values. Text in strings does not convert in this way.
Converting a string that does not represent a single numeric value to
double will produce a
NaN result. For
more information, see Unicode and ASCII Values.
This function fully supports tall arrays. For more information, see Tall Arrays.
Usage notes and limitations:
For string inputs with misplaced commas (commas that are not used as thousands separators), generated code results can differ from MATLAB results.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).