How many decimal places should a percentage have?
Decide how many decimal places a number deserves from how many cases are behind it, and round at the end, not along the way.
Free course. Your Maestro, an AI, .
Ana, from marketing at Tiendas La Ceiba, sends in her quarterly report. Two lines stand out:
Repeat purchases at Ojo de Agua rose from 63.333% to 64.516%.
42.50% of surveyed customers would recommend the store.
They look rigorous: three decimal places sound like careful measurement. But Ojo de Agua has 310 cardholder customers, and the survey went to 40 people. (Ana, the survey and the chain are invented for the course.) Before you go on, do a quick calculation.
Check yourself: In the survey, 17 out of 40 customers said they would recommend the store: 42.50%. If one more customer had said yes, how much would the percentage change?
Describing a sample is not knowing the whole population
17 out of 40 is exactly 42.5% in this survey. That describes the observed responses; it does not establish the percentage of all customers to that precision. Writing 42.50% adds no information to 42.5%, but the per-response jump does not make that decimal incorrect.
With a fixed denominator, one case changes the percentage by 100 ÷ n points. This measures sensitivity: 2.5 points for 40 responses, about 0.32 for 310 customers, and about 0.01 for 10,400. It is not a universal rounding rule or a measure of uncertainty.
Keep the count and denominator, and choose rounding for the purpose and data quality. "17 out of 40 (42.5%)" is an exact description; generalizing to all customers requires knowing how the sample was selected. A useful decimal for comparison should not be presented as certainty about a population.
Rounding has another trap: reporting the parts of a total.
The parts of a total, each rounded to a whole number, as in a report table or a pie chart.
Three equal parts
Example 1 of 2
ventas = [1, 1, 1]total = sum(ventas)partes = [round(v / total * 100) for v in ventas]print(partes)print(sum(partes))A guess is fine. What you write stays in this browser and waits in your course.
Example 2 of 2, opens once you explain this one
Not adding up to 100 isn't an error
If your rounded percentages add up to 99 or 101, don't fix them by nudging one up or down by hand: that really would be changing the data. The honest thing is to leave them as they are and add a note: percentages may not add up to 100 because of rounding. Anyone reading a report with that note gets it right away.
What does cause problems is rounding before you do the math. Go back to Ceiba Express, from the percentage points page: its repeat purchase rate went from 25.0% to 28.846...%. If you first round to 28.8% and then calculate the change, you get 15.2%. With the full numbers it's 15.4%. Two tenths won't change any decision, but in a chain of calculations (the change in an average of a rate) the error builds up step by step.
Ask your Maestro why rounding at the start can move the final result.
Try it
Calculate each store's 2025 repeat purchase rate and, next to it, how many points a single customer would move it. The table goes from the store with the fewest customers to the one with the most.
Your turn
Round recompra to one decimal place and add the column un_cliente_mueve: how many points the repeat purchase rate changes with a single customer, 100.0 / clientes_2025, rounded to two decimal places. You're done when the first row is Ojo de Agua with 64.5 and 0.32.
Tables: sucursales (sucursal, municipio, ventas_2024, ventas_2025, clientes_2024, recompraron_2024, clientes_2025, recompraron_2025)
sucursales · 24 rows
| Column | Type |
|---|---|
| sucursal Nombre de la sucursal. | VARCHAR |
| municipio Municipio (ficticio) donde está. | VARCHAR |
| ventas_2024 Ventas del año 2024, en pesos. | BIGINT |
| ventas_2025 Ventas del año 2025, en pesos. | BIGINT |
| clientes_2024 Clientes con tarjeta que compraron en 2024. | BIGINT |
| recompraron_2024 De esos clientes, cuántos volvieron a comprar en menos de 90 días (2024). | BIGINT |
| clientes_2025 Clientes con tarjeta que compraron en 2025. | BIGINT |
| recompraron_2025 De esos clientes, cuántos volvieron a comprar en menos de 90 días (2025). | BIGINT |
First rows
| sucursal | municipio | ventas_2024 | ventas_2025 | clientes_2024 | recompraron_2024 | clientes_2025 | recompraron_2025 |
|---|---|---|---|---|---|---|---|
| Centro | Ciudad Ceiba | 41200000 | 43800000 | 9800 | 2840 | 10400 | 3120 |
| Chapultepec | Ciudad Ceiba | 27900000 | 26100000 | 7100 | 2200 | 6900 | 2140 |
| Plaza Norte | Ciudad Ceiba | 9400000 | 10100000 | 2600 | 960 | 2750 | 1070 |
Tab indents; Esc then Tab leaves
Read the table from top to bottom. At Ojo de Agua, Cerro Prieto and El Encino, one customer changes the percentage by about a third of a point; at Centro, about a hundredth. The table compares sensitivity with a fixed denominator, not how many decimals are allowed.
Ana's report can give counts and readable rounding:
Repeat purchases at Ojo de Agua went from 190 of 300 customers (63.3%) in 2024 to 200 of 310 (64.5%) in 2025: about 1.2 points higher.
17 of the 40 surveyed customers (42.5%) would recommend the store.
There were 10 more repeat purchasers and also 10 more customers in the denominator. The rate difference is equivalent to about four customers out of 310; it is not a count of three or four additional customers.
False precision arises when the display suggests more certainty than the data supports, such as cents in a highly uncertain sales projection. Distinguish exact calculation, measurement quality, and conclusions beyond the observed cases.
Tip: Round at the end
Do all the math with the full numbers and round only what you're going to show. In a spreadsheet, change how many decimal places are displayed, not the stored value. In Python or SQL, round in the last step, not the first.
Paste a number from one of your reports and ask your Maestro how many decimal places it deserves.
One last question, with a rate like the ones in module 2.
Check yourself: A municipality of "approximately 250,000 inhabitants" had 611 thefts from businesses in a year. What's the best way to report its rate?