ROUND Function in Excel
Rounds a number to a specified number of decimal places. Cents for invoices, whole dollars for reports, nearest $100 for planning — all one function. Also the star of the most stubborn Excel misconception on the internet: no, Excel does not use banker's rounding.
⚠ The Banker's Rounding Myth — Busted
You've read that "Excel uses banker's rounding" somewhere. It's the most-repeated misconception about ROUND. Here's the truth, tested.
What banker's rounding WOULD do
What Excel's ROUND actually does
ROUND(2.5, 0) = 3, ROUND(-2.5, 0) = -3. Consistent, predictable, standard commercial rounding. VBA's Application.Round() is a separate function and does use banker's rounding, which is where the confusion originates. Worksheet ROUND has never behaved that way.
Quick Answer
ROUND rounds a number to the number of decimal places you specify. Uses round-half-away-from-zero: 0.5 rounds up, -0.5 rounds down. Negative decimal places round to the left of the decimal point (nearest 10, 100, 1000...).
Example: =ROUND(24.999, 2) returns 25.00. =ROUND(12345.67, -2) returns 12300. =ROUND(47.83/5, 0) * 5 returns 50 — rounding to the nearest $5.
💰 Rounding Family Practice Workbook
All 5 ROUND examples plus ROUNDUP and ROUNDDOWN patterns on 18 realistic invoice line items.
Syntax
ROUND takes exactly two arguments — the number to round and the number of decimal places.
| Argument | Type | Description |
|---|---|---|
| number | Required | The number, cell reference, or formula result to be rounded. |
| num_digits | Required | How many decimal places to keep. 2 = cents. 0 = whole number. -1 = nearest 10. -2 = nearest 100. Range: about -15 to +15. |
Direction rule: ROUND uses round-half-away-from-zero. Positive halves round up, negative halves round down. For values that clearly aren't halfway (e.g. 2.3 or 2.7), standard nearest-number rounding applies.
5 Worked Examples
Round tax amount to cents (2 decimal places)
The most common ROUND use — after multiplying a subtotal by a tax rate, the raw result usually has 4+ decimal places. Money doesn't work that way; round to cents.
| Subtotal | Tax Rate | Tax Raw | Formula | Rounded |
|---|---|---|---|---|
| $74.97 | 7.25% | $5.435325 | =ROUND(C2, 2) | $5.44 |
| $129.325 | 7.25% | $9.3760625 | =ROUND(C3, 2) | $9.38 |
| $149.99 | 8.25% | $12.374175 | =ROUND(C4, 2) | $12.37 |
Raw tax has fractional cents that don't exist in the real world. ROUND to 2 gives you the value you can actually invoice.
The 0.5 tie-breaking rule (half rounds AWAY from zero)
When a number sits exactly on the "0.5" boundary, ROUND breaks the tie by moving away from zero — up for positives, down for negatives. Consistent and predictable.
| Input | Formula | Result | Rule |
|---|---|---|---|
| 2.5 | =ROUND(2.5, 0) | 3 | positive 0.5 → up |
| 3.5 | =ROUND(3.5, 0) | 4 | positive 0.5 → up |
| -2.5 | =ROUND(-2.5, 0) | -3 | negative 0.5 → down (more negative) |
| 0.125 | =ROUND(0.125, 2) | 0.13 | 0.5 at cents → up |
Some binary-float quirks aside (0.135 may not round the way you expect due to floating-point representation), the rule holds for real-world values.
Negative digits — round to nearest 10, 100, or 1000
Excel's underused superpower. The num_digits argument can be negative, which rounds to positions LEFT of the decimal point.
| num_digits | Formula | Result | Rounds to nearest |
|---|---|---|---|
| 2 | =ROUND(12345.67, 2) | $12,345.67 | cent |
| 0 | =ROUND(12345.67, 0) | $12,346 | dollar |
| -1 | =ROUND(12345.67, -1) | $12,350 | $10 |
| -2 | =ROUND(12345.67, -2) | $12,300 | $100 |
| -3 | =ROUND(12345.67, -3) | $12,000 | $1,000 |
Great for executive summaries, budget planning, or any "round numbers only" report — you don't need TEXT formatting tricks, just negative num_digits.
Round to nearest $5 (or $25, $100, any multiple)
The pattern: divide by the multiple, ROUND to 0 places, multiply back. This works for any denomination — pricing tiers, salary bands, inventory quantities.
| Value | Nearest $5 | Nearest $25 | Nearest $50 |
|---|---|---|---|
| $47.83 | $50 | $50 | $50 |
| $128.45 | $130 | $125 | $150 |
| $383.17 | $385 | $375 | $400 |
For those who prefer a dedicated function, MROUND(A2, 5) does the same thing in one call. See the MROUND comparison below.
Format vs ROUND — the invoice-total drift bug
Cell formatting only changes what's displayed. The underlying value still carries all decimals, so sums drift by pennies. ROUND changes the actual stored value. This is the single most common source of "why doesn't my invoice total match?" bugs.
| Approach | Underlying values | SUM displays as | True sum |
|---|---|---|---|
| Format only (2 dp) | 5.435325 + 9.3760625 + ... | $461.94 | $461.9361925 |
| ROUND each row first | 5.44 + 9.38 + ... | $461.93 | $461.93 |
The difference: 1¢ across just 18 rows. Scale to 500 invoices and drift becomes hundreds of dollars. Fix: =SUMPRODUCT(ROUND(A2:A100, 2)) — rounds each row before summing. Or ROUND at the source, then SUM normally. Never rely on cell formatting for money math.
Interactive Playground
Input Values
A3 → 2.5
A4 → -2.5
A5 → 47.83
A6 → 12345.67
Formula & Result
The Rounding Family
Three functions for three different needs. Pick by what "round" means for your use case.
The num_digits Spectrum — Decoded
One argument controls precision across 8+ orders of magnitude. The full range from cents to millions.
| num_digits | Rounds to nearest | Formula example | Input | Result |
|---|---|---|---|---|
| 4 | 0.0001 (ten-thousandth) | =ROUND(x, 4) | 12345.6789012 | 12345.6789 |
| 3 | 0.001 (thousandth) | =ROUND(x, 3) | 12345.6789 | 12345.679 |
| 2 | 0.01 (cent) | =ROUND(x, 2) | 12345.6789 | 12345.68 |
| 1 | 0.1 (tenth) | =ROUND(x, 1) | 12345.6789 | 12345.7 |
| 0 | 1 (whole) | =ROUND(x, 0) | 12345.6789 | 12346 |
| -1 | 10 | =ROUND(x, -1) | 12345.6789 | 12350 |
| -2 | 100 | =ROUND(x, -2) | 12345.6789 | 12300 |
| -3 | 1,000 | =ROUND(x, -3) | 12345.6789 | 12000 |
| -4 | 10,000 | =ROUND(x, -4) | 12345.6789 | 10000 |
ROUND vs MROUND — Two Ways to Round to a Multiple
ROUND rounds to a decimal place. MROUND rounds to any multiple. Different tools for different jobs.
| Goal | With ROUND | With MROUND | Result |
|---|---|---|---|
| Round 47.83 to nearest $5 | =ROUND(47.83/5, 0)*5 | =MROUND(47.83, 5) | 50 |
| Round 128.45 to nearest $25 | =ROUND(128.45/25, 0)*25 | =MROUND(128.45, 25) | 125 |
| Round 383.17 to nearest $50 | =ROUND(383.17/50, 0)*50 | =MROUND(383.17, 50) | 400 |
| Round 2:47 PM to nearest 15 min | (complex time math) | =MROUND(A2, "0:15") | 2:45 PM |
MROUND is cleaner but has one quirk — sign of number and multiple must match, or MROUND returns #NUM!. ROUND-divide-multiply works with any sign combination.
Common Errors
| Symptom | Cause | Fix |
|---|---|---|
| Invoice total off by cents | You formatted cells to show 2 decimals but the underlying values still carry 4+. SUM adds the raw values, not the displayed ones. | ROUND each value at the source, or use =SUMPRODUCT(ROUND(range, 2)). Never trust display formatting for money math. |
| Unexpected 0.5 result | Floating-point representation. 0.135 doesn't exist exactly in binary — it's stored as ~0.1349999. ROUND respects the actual stored value. | Rare edge case. If it matters, use =ROUND(A2 + 0.0000001, 2) to nudge past the boundary, or switch to fixed-point arithmetic upstream. |
| #VALUE! | The number argument is text that can't convert (e.g. =ROUND("hello", 2)). Or num_digits is text. |
Ensure both arguments are numeric. Wrap with VALUE() if a "number" is stored as text (common with imports). |
| #NUM! | num_digits is outside Excel's supported range (roughly -15 to +15). | Clamp num_digits. If you needed higher precision, Excel isn't the right tool — floating-point can't represent it anyway. |
| Result seems wrong for 0.5 | You believed the "Excel uses banker's rounding" myth. It doesn't. It rounds half AWAY from zero. | Confirm your understanding: =ROUND(2.5, 0) = 3, always. If you truly need banker's rounding, use =EVEN(A2)/2-style tricks or the VBA function. |
| Bulk sum still drifts after ROUND | You ROUNDed the SUM instead of ROUNDing each row. | Move ROUND inside each row's formula, not around the SUM. Or use SUMPRODUCT(ROUND(range, 2)) to round-then-sum in one step. |
💰 Practice on Real Invoice Data
18 line items with fractional tax cents. Every ROUND pattern plus the drift-bug demo, side-by-side with ROUNDUP and ROUNDDOWN.
Related Functions
=SUMPRODUCT(ROUND(range, 2)).Compatibility
| Platform | Supported | Version | Notes |
|---|---|---|---|
| Excel for Windows | ✓ | 1.0+ (1985) | All versions |
| Excel for Mac | ✓ | 1.0+ | All versions |
| Microsoft 365 | ✓ | Current | Full support |
| Excel Online | ✓ | Current | Full support |
| Excel Mobile (iOS/Android) | ✓ | Current | Full support |
| Google Sheets | ✓ | All | Identical behavior |
| LibreOffice Calc | ✓ | All | Identical behavior |
How to Use ROUND — Step by Step
- Click an empty cell where you want the rounded value to appear. Typically the column right of your raw value.
- Type
=ROUND(— Excel auto-suggests as soon as you type "RO". - Click the source cell or type its reference, then add a comma and the number of decimal places:
=ROUND(A2, 2)for cents. - Close with
)and press Enter. - Fill down the column. Grab the fill handle or double-click to auto-fill for the whole data range.
- For a rounded SUM, don't round the SUM — round each value first:
=SUMPRODUCT(ROUND(A2:A100, 2)). This eliminates the invoice-drift bug in one formula. - For nearest 10/100/1000, use negative num_digits:
=ROUND(A2, -2)rounds to nearest hundred. For nearest $5/$25/$50, use the divide-round-multiply pattern or MROUND.
Explore More Functions
💰 One More Time — Grab the Workbook
Every ROUND pattern plus ROUNDUP and ROUNDDOWN, on 18 real invoice rows. Free, one file, six sheets.
Frequently Asked Questions
Does Excel use banker's rounding?
No. Excel's worksheet ROUND function uses round-half-away-from-zero. ROUND(2.5, 0) = 3, ROUND(-2.5, 0) = -3. Not the "round to nearest even" behavior of banker's rounding.
The confusion comes from VBA. Application.Round() in VBA does use banker's rounding — that's a separate function. Worksheet ROUND has never behaved that way, and never will (changing it would break decades of spreadsheets).
How do I round to the nearest 5, 25, or 100?
Two options. Pattern 1: =ROUND(A2/5, 0) * 5 — divide by the multiple, round to 0 places, multiply back. Works for any denomination. Pattern 2: =MROUND(A2, 5) — dedicated function, one call, cleaner.
MROUND has a quirk: sign of number and multiple must match, or it returns #NUM!. The ROUND-divide-multiply pattern always works.
Why does my invoice total drift by pennies?
Because you formatted cells to show 2 decimals instead of ROUNDing the actual values. Formatting only changes what you see; the raw stored value still has 4+ decimal places. SUM adds the raw values, not the displayed ones.
Fix: replace formatting-only cells with actual ROUND formulas at the source. Or, for a single-formula solution: =SUMPRODUCT(ROUND(A2:A100, 2)) rounds each value before summing. This is the correct pattern for any invoice, payroll, or tax total.
What does a negative num_digits do?
Rounds to the LEFT of the decimal point. -1 rounds to nearest 10, -2 to nearest 100, -3 to nearest 1,000, and so on.
Example: =ROUND(12345.67, -2) returns 12300. Great for executive summaries, budget planning, or any "round numbers only" report.
What's the difference between ROUND and MROUND?
ROUND rounds to a decimal place (positive: right of decimal, negative: left of decimal). MROUND rounds to any multiple — like 5, 25, 0.05, or even a time like "0:15".
They overlap for rounding to powers of 10: =ROUND(A2, -1) and =MROUND(A2, 10) give the same result. For anything else (rounding to $5, 15-minute intervals, etc.), MROUND is more direct.
What's the difference between ROUND and TEXT?
ROUND changes the actual numeric value. TEXT formats a number as a string for display without changing the underlying value.
Use ROUND when you're going to do math with the result. Use TEXT when you're building a display string (e.g. for a report title or concatenated label). =TEXT(A2, "$#,##0.00") returns the text "$1,234.57" — you can't SUM that.
Can I nest ROUND inside other formulas?
Yes, and it's often the right approach. =ROUND(A2*B2*1.0825, 2) multiplies then rounds in one step. This is preferable to two-step approaches because it avoids storing intermediate raw values.
For SUMs across many rows, use =SUMPRODUCT(ROUND(range, 2)) — the ROUND happens element-by-element inside the array, then SUMPRODUCT totals the rounded values.
What if num_digits is a decimal, like 1.7?
Excel truncates it to an integer before using it. So =ROUND(x, 1.7) behaves identically to =ROUND(x, 1). Excel doesn't error, but the fractional part is ignored.
Best practice: always pass an integer to keep intent explicit. If your num_digits comes from a formula, wrap it in INT() to make the truncation visible.
Does ROUND work on dates and times?
Yes — Excel stores dates and times as numbers (whole numbers for dates, fractions of a day for times). ROUND treats them as numbers.
=ROUND(NOW(), 0) returns midnight of today (drops the time portion). =ROUND(A2, 4) where A2 is a time rounds to the nearest 0.0001 of a day (~8.6 seconds). For meaningful time rounding, use MROUND with a time literal: =MROUND(A2, "0:15") rounds to nearest 15 minutes.
Why does ROUND(0.135, 2) return 0.13 not 0.14?
Floating-point representation. The value 0.135 can't be stored exactly in binary — it's actually stored as ~0.13499999999999998. Since that's less than 0.135 by a hair, ROUND correctly rounds it down to 0.13.
This is a hardware-level quirk affecting every language and tool that uses IEEE 754 floats (Excel, Python, JavaScript, C, everything). Rare in real workflows unless you're generating exact half-boundary test cases. If you truly need it: =ROUND(A2 + 0.0000001, 2).
Should I use ROUND, ROUNDUP, or ROUNDDOWN?
ROUND for standard commercial rounding — invoices, reports, most everyday math. ROUNDUP when you must never under-count — shipping tiers, box counts, time billing. ROUNDDOWN when you must never over-count — budget items, safe inventory counts, tax deductions.
Rule of thumb: if under-counting would cost you money → ROUNDUP. If over-counting would cost you money → ROUNDDOWN. Everything else → ROUND.
Does ROUND affect performance in large workbooks?
Barely. ROUND is a fast, non-volatile function. Excel can evaluate hundreds of thousands of ROUND calls per second. In workbooks with 1M+ rows, the recalc cost of ROUND is dwarfed by the cost of the actual arithmetic feeding into it.
If a workbook is slow, ROUND is almost never the cause. Look at volatile functions (NOW, TODAY, RAND), massive VLOOKUPs, or array formulas over huge ranges instead.
Templates That Use ROUND
Invoice Template
Every line item, tax calc, and grand total wrapped in ROUND to prevent the classic penny-drift bug across multi-line invoices.
USES ROUNDSales Tax Calculator
Multi-jurisdiction tax with rate lookup, ROUND to 2 for cents, plus SUMPRODUCT(ROUND) for penny-perfect totals.
USES ROUNDPayroll Calculator
Gross-to-net with tax, insurance, retirement — each stage ROUNDed so employee stubs never drift from the ledger.
USES ROUNDCurrency Converter
Multi-currency conversion with FX rates. ROUND to 2 for major currencies, ROUND to 0 for JPY / KRW / IDR (no fractional units).
USES ROUNDDiscount Pricing Sheet
Volume discounts calculated to fractional cents, ROUNDed for consistency. Price-tier logic uses the nearest-$5 pattern.
USES ROUNDLoan Calculator
Amortization schedule with monthly ROUND for payment consistency — matches what banks actually charge, not the theoretical fraction.
USES ROUNDFinancial Summary Report
Executive-view numbers rounded to nearest $1,000 using negative num_digits. Detail view keeps cents.
USES ROUNDExpense Report
Per-diem calculations, mileage reimbursement (miles × rate ROUNDed), grand total that matches employee submission.
Never Ship a Drifting Invoice Total Again
Excel Wizard writes ROUND patterns — cent-precise invoicing, executive-summary rounding, nearest-multiple pricing — from a plain-English prompt. Automatically detects the format-vs-ROUND bug and fixes it, right inside Excel.
Get Excel Wizard Add-in →