Python round() Function Explained

The built-in round() function returns a rounded version of a number.

You can use it in two common ways:

  • round(number) rounds to the nearest whole number
  • round(number, digits) rounds to a chosen number of decimal places

This is useful when you want cleaner numeric output or when you need to limit decimal places in a result.

Quick example #

print(round(3.14159))
print(round(3.14159, 2))

Output:

3
3.14

Use round(number) to round to the nearest whole number, or round(number, digits) to keep a set number of decimal places.

What round() does #

  • round() is a built-in Python function
  • It returns a rounded version of a number
  • With one argument, it rounds to the nearest integer
  • With two arguments, it rounds to a chosen number of decimal places

You do not need to import anything to use it.

Basic syntax #

The syntax is:

round(number[, ndigits])
  • number is the value to round
  • ndigits is optional
  • ndigits can be positive, zero, or negative

Basic examples:

print(round(7.8))
print(round(7.8, 1))
print(round(1234, -2))

Output:

8
7.8
1200

If you are still getting used to Python number types, see Python numbers explained: int, float, complex.

Using round() with one argument #

When you pass only one argument, Python rounds to the nearest whole number.

print(round(4.2))
print(round(4.8))

Output:

4
5

With a normal float, the result is usually an integer:

result = round(10.2)
print(result)
print(type(result))

Output:

10
<class 'int'>

If you need to convert values directly to integers without rounding rules, compare this with Python int() function explained.

Using round() with decimal places #

You can pass a second argument to control how many decimal places to keep.

print(round(3.14159, 2))
print(round(3.14159, 3))

Output:

3.14
3.142

This is helpful when you want a simpler numeric value for calculations or reporting.

price = 19.9876
rounded_price = round(price, 2)

print(price)
print(rounded_price)

Output:

19.9876
19.99

If you need to convert text such as "3.14159" before rounding, see how to convert a string to float in Python or Python float() function explained.

Using negative ndigits #

A negative ndigits value rounds to tens, hundreds, or larger place values.

print(round(1234, -1))
print(round(1234, -2))
print(round(1234, -3))

Output:

1230
1200
1000

How this works:

  • -1 rounds to the nearest 10
  • -2 rounds to the nearest 100
  • -3 rounds to the nearest 1000

This can be useful when you want less precise but easier-to-read numbers.

Important behavior beginners notice #

Some results may look surprising with numbers ending in .5.

For example:

print(round(2.5))
print(round(3.5))

Output:

2
4

Python uses banker’s rounding in tie cases. That means it rounds to the nearest even number in some .5 situations.

More examples:

print(round(1.5))
print(round(2.5))
print(round(3.5))
print(round(4.5))

Output:

2
2
4
4

This is normal Python behavior, not a bug.

So:

  • round(2.5) gives 2
  • round(3.5) gives 4

If you expected .5 to always round upward, this behavior can be confusing at first.

Return values #

round() returns the rounded value.

It does not change the original variable unless you save the result.

value = 3.14159

print(value)
print(round(value, 2))
print(value)

Output:

3.14159
3.14
3.14159

If you want to keep the rounded value, assign it:

value = 3.14159
value = round(value, 2)

print(value)

Output:

3.14

When to use round() #

Use round() when you want to:

  • Display simpler numeric output
  • Limit decimal places in calculations
  • Round values before reporting results
  • Prepare numbers for easier reading

For example:

distance = 12.67891
print(round(distance, 2))

Output:

12.68

Common mistakes #

Here are some common beginner mistakes when using round().

Expecting round() to always round .5 upward #

This is one of the most common surprises.

print(round(2.5))
print(round(3.5))

Output:

2
4

Python may round tie values to the nearest even number.

Forgetting to save the returned value #

round() returns a new value. It does not update the old one by itself.

value = 3.14159
round(value, 2)

print(value)

Output:

3.14159

To keep the rounded result:

value = round(value, 2)

Passing a string instead of a number #

This will cause an error:

# print(round("3.14", 1))

You need to convert the string first:

text = "3.14"
number = float(text)

print(round(number, 1))

Output:

3.1

Confusing rounding a value with formatting text output #

round() changes the numeric value it returns. It is not the same as formatting text for display.

If your data starts as text, convert it first with float() or int().

FAQ #

Does round() always round 0.5 up? #

No. In tie cases, Python may round to the nearest even number.

Does round() change the original number? #

No. It returns a new value. You must assign it if you want to keep it.

Can round() round to tens or hundreds? #

Yes. Use a negative ndigits value like -1 or -2.

Can I use round() on a string like "3.14"? #

Not directly. Convert the string first with float() or int().

See also #

Press Esc to close