Short Answer
Rule Statement: Storage vs. Display
One of the most critical distinctions in metrology when using MATLAB is the difference between numerical precision (how a number is stored) and display precision (how a number is shown). MATLAB stores all numeric values by default as double-precision floating-point numbers (64-bit), conforming to the IEEE 754 standard. This provides approximately 15 to 17 significant decimal digits.
It is a common misconception that using the format command changes the precision of a calculation. It does not. The format command only alters the visual representation of the data. To actually modify the value to a specific number of significant figures, one must use explicit rounding functions.
This site serves as a comprehensive precision and rounding reference. While we provide the industry’s most accurate significant figures calculator for quick verification, the following technical deep-dive ensures that engineers and scientists understand the underlying mechanics of numerical stability and reporting standards.
Software Behavior Note: The ‘format’ Command
MATLAB offers several display formats that affect how significant figures appear in the Command Window. Understanding these is essential for avoiding the misinterpretation of results.
| Format Command | Behavior | Typical Use Case |
|---|---|---|
format short |
4 decimal places | General quick-checks |
format long |
15 decimal places | High-precision verification |
format bank |
2 decimal places | Currency/Financials |
format shortE |
5 decimal places (Scientific) | Very large or small magnitudes |
format longE |
15 decimal places (Scientific) | Metrology-grade reporting |
To see the true precision of a variable without the limitations of the default display, use the format long g command, which chooses the most concise representation while maintaining maximum precision.
Worked Examples: Controlling Precision
Example 1: Rounding to N Significant Figures
MATLAB’s round function allows for rounding to a specific number of digits. To round a value to 3 significant figures, use the following logic:
- Input:
x = 123.4567; - Operation:
round(x, 3, 'significant') - Reasoning: The
'significant'flag tells MATLAB to count digits starting from the first non-zero digit, regardless of the decimal point’s position. - Result:
123
Example 2: Handling Small Magnitudes
Consider the value y = 0.000456789;. Rounding to 2 significant figures:
- Operation:
round(y, 2, 'significant') - Reasoning: Leading zeros are not significant. The first significant digit is 4, the second is 5. The following digit is 6, triggering an upward round.
- Result:
0.00046
Counter-Examples: Common Precision Pitfalls
Many users fall into traps that lead to “precision drift” or incorrect reporting of significant figures.
- The Display Trap: A user sees
3.14in the Command Window (due toformat short) and assumes the variable has only 3 significant figures. In reality, the variable may hold3.141592653589793. Reporting the displayed value instead of the stored value leads to premature rounding errors. - The Double Rounding Error: Rounding a result at every intermediate step of a multi-step calculation. Standard Practice: Carry all available precision through the calculation and round only the final result to the appropriate number of significant figures based on the Multiplication and Division Rules.
- The Zero-Comparison Error: Using
if x == 0with floating-point numbers. Due to IEEE 754 precision limits, a result that should be zero often appears as1.2e-16. Use a tolerance:if abs(x) < eps.
Standards Citation: Metrological Compliance
When reporting data generated in MATLAB, the output must adhere to international standards to ensure reproducibility and traceability.
- ISO 80000-1: Specifies that the number of digits kept in a result should be consistent with the uncertainty of the measurement.
- GUM (Guide to the Expression of Uncertainty in Measurement): Recommends that the uncertainty itself be rounded to two significant figures, and the main result be rounded to the same decimal position as the uncertainty.
- ASTM E29: Provides the standard practice for using significant digits in experimental data. MATLAB users must manually apply these rules using
fprintforsprintffor final reporting to ensure trailing zeros are preserved (e.g.,%.3fto ensure 1.200 is not displayed as 1.2).
Common Mistakes in MATLAB Precision
- Confusing
roundwithfloororceil:roundfollows standard rounding rules, whileflooralways moves toward negative infinity andceiltoward positive infinity. - Ignoring
eps:epsis the distance from 1.0 to the next largest double-precision number. Failing to account forepswhen comparing two nearly identical numbers leads to logic errors. - Using
num2strfor Precision:num2stroften strips trailing zeros, which are essential for indicating precision in scientific reporting. Usesprintffor strict control over the output string.
Quick Reference Table: MATLAB Precision Commands
| Goal | MATLAB Command | Note |
|---|---|---|
| Change View | format long |
No change to value |
| Round to N Sig Figs | round(x, N, 'significant') |
Changes the value |
| Format for Export | sprintf('%.Nf', x) |
Preserves trailing zeros |
| Machine Epsilon | eps |
Smallest distinguishable difference |
| Scientific Notation | format shortE |
Standard for large/small numbers |
FAQ
Does 'format long' make my calculations more accurate?
No. 'format long' only changes how MATLAB displays the number in the Command Window. The actual calculation is always performed using double-precision floating-point math regardless of the display setting.
How do I keep trailing zeros in my MATLAB output?
Use the 'sprintf' or 'fprintf' functions with a precision specifier (e.g., '%.3f' for three decimal places). The standard 'disp' or 'num2str' functions often remove trailing zeros.
What is the difference between rounding to decimal places and rounding to significant figures in MATLAB?
Rounding to decimal places (round(x, N)) counts positions to the right of the decimal. Rounding to significant figures (round(x, N, 'significant')) counts from the first non-zero digit, regardless of where the decimal point is located.

Leave a Reply