Programming |
Floating-Point Numbers
MATLAB represents floating-point numbers in either double-precision or single-precision format. The default is double precision, but you can make any number single precision with a simple conversion function.
Double-Precision Floating Point
MATLAB constructs the double
data type according to IEEE Standard 754 for double precision. Any value stored as a double
requires 64 bits, formatted as shown in the table below:
Bits |
Usage |
63 |
Sign (0 = positive, 1 = negative) |
62 to 52 |
Exponent, biased by 1023 |
51 to 0 |
Fraction f of the number 1.f |
Maximum and Minimum Double-Precision Values. The MATLAB functions realmax
and realmin
return the maximum and minimum values that you can represent with the double
data type:
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g'; sprintf(str, -realmax, -realmin, realmin, realmax) ans = The range for double is: -1.79769e+308 to -2.22507e-308 and 2.22507e-308 to 1.79769e+308
Numbers larger than realmax
or smaller than -realmax
are assigned the values of positive and negative infinity respectively:
Creating Double-Precision Data. Since the default numeric type for MATLAB is double
, you can create a double
with a simple assignment statement:
The whos
function shows that MATLAB has created a 1-by-1 array of type double
for the value you just stored in x
:
Use the isfloat
function if you just want to verify that x
is a floating-point number:
The next statement creates a much larger value. This value requires a double
; you could not store this using the single-precision data type:
Converting to Double Precision. You can convert other numeric data, characters or strings, and logical data to double precision using the MATLAB function, double
. This example converts a signed integer to double-precision floating point:
y = int64(-589324077574); % Create a 64-bit integer x = double(y) % Convert to double x = -5.8932e+011 whos x Name Size Bytes Class x 1x1 8 double array
Single-Precision Floating Point
MATLAB constructs the single
data type according to IEEE Standard 754 for single precision. Any value stored as a single
requires 32 bits, formatted as shown in the table below:
Bits |
Usage |
31 |
Sign (0 = positive, 1 = negative) |
30 to 23 |
Exponent, biased by 127 |
22 to 0 |
Fraction f of the number 1.f |
Maximum and Minimum Single-Precision Values. The MATLAB functions realmax
and realmin
, when called with the argument 'single'
, return the maximum and minimum values that you can represent with the single
data type:
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g'; sprintf(str, -realmax('single'), -realmin('single'), ... realmin('single'), realmax('single')) ans = The range for single is: -3.40282e+038 to -1.17549e-038 and 1.17549e-038 to 3.40282e+038
Numbers larger than realmax
('single') or smaller than -realmax
('single') are assigned the values of positive and negative infinity respectively:
Creating Single-Precision Data. Because MATLAB stores numeric data as a double
by default, you need to use the single
conversion function to create a single-precision number:
The whos
function shows that MATLAB has created a 1-by-1 array of type single
. This value requires only 4 bytes compared with the 8 bytes used to store a double
:
Use the isfloat
function if you just want to verify that x
is a floating-point number:
Converting to Single Precision. You can convert other numeric data, characters or strings, and logical data to single precision using the MATLAB function, single
. This example converts a signed integer to single-precision floating point:
y = int64(-589324077574); % Create a 64-bit integer x = single(y) % Convert to single x = -5.8932e+011 whos x Name Size Bytes Class x 1x1 4 single array
Floating-Point Functions
See Floating-Point Functions for a list of functions most commonly used with floating-point numbers in MATLAB.
Numeric Types | Complex Numbers |
© 1994-2005 The MathWorks, Inc.