How to Round Numbers in Python
With many businesses turning to Python’s powerful data science ecosystem to analyze their data, understanding how to avoid introducing bias into datasets is absolutely vital. If you’ve studied some statistics, then you’re probably familiar with terms like reporting bias, selection bias, and sampling bias. There’s another type of bias that plays an important role when you’re dealing with numeric data: rounding bias.
Understanding how rounding works in Python can help you avoid biasing your dataset. This is an important skill. After all, drawing conclusions from biased data can lead to costly mistakes.
In this tutorial, you’ll learn:
- Why the way you round numbers is important
- How to round a number according to various rounding strategies
- How to implement each strategy in pure Python
- How rounding affects data and which rounding strategy minimizes this effect
- How to round numbers in NumPy arrays and pandas DataFrames
- When to apply different rounding strategies
Take the Quiz: Test your knowledge with our interactive “Rounding Numbers in Python” quiz. Upon completion you will receive a score so you can track your learning progress over time:
Free Bonus: Click here to download sample code to ensure that your numbers are always well rounded!
You won’t get a treatise on numeric precision in computing, although you’ll touch briefly on the subject. Only a familiarity with the fundamentals of Python is necessary, and the math should feel familiar if you’ve had high school algebra.
You’ll start by looking at Python’s built-in rounding mechanism.
Python’s Built-in round()
Function
Python has a built-in round()
function that takes two numeric arguments, n
and ndigits
, and returns the number n
rounded to ndigits
. The ndigits
argument defaults to zero, so leaving it out results in a number rounded to an integer. As you’ll see, round()
may not work quite as you expect.
The way most people are taught to round a number goes something like this:
-
Round the number
n
top
decimal places by first shifting the decimal point inn
byp
places. To do that, multiplyn
by 10ᵖ (10 raised to thep
power) to get a new number,m
. -
Then look at the digit
d
in the first decimal place ofm
. Ifd
is less than 5, roundm
down to the nearest integer. Otherwise, roundm
up. -
Finally, shift the decimal point back
p
places by dividingm
by 10ᵖ.
It’s an algorithm! For example, the number 2.5
rounded to the nearest whole number is 3
. The number 1.64
rounded to one decimal place is 1.6
.
Now open up an interpreter session and round 2.5
to the nearest whole number using Python’s built-in round()
function:
>>> round(2.5)
2
Gasp!
Check out how round()
handles the number 1.5
:
>>> round(1.5)
2
So, round()
rounds 1.5
up to 2
, and 2.5
down to 2
!
Before you go raising an issue on the Python bug tracker, rest assured you that round(2.5)
is supposed to return 2
. There’s a good reason why round()
behaves the way it does.
In this tutorial, you’ll learn that there are more ways to round a number than you might expect, each with unique advantages and disadvantages. round()
behaves according to a particular rounding strategy—which may or may not be the one you need for a given situation.
You might be wondering, Can the way I round numbers really have that much of an impact? Next up, take a look at just how extreme the effects of rounding can be.
How Much Impact Can Rounding Have?
Suppose you have an incredibly lucky day and find $100 on the ground. Rather than spending all your money at once, you decide to play it smart and invest your money by buying some shares of different stocks.
The value of a stock depends on supply and demand. The more people there are who want to buy a stock, the more value that stock has, and vice versa. In high-volume stock markets, the value of a particular stock can fluctuate on a second-by-second basis.
Read the full article at https://realpython.com/python-rounding/ »
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]