| 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.