How to Round a Number Down in Python?

Rate this post

Problem Formulation: Given a float number. How to round the float down in Python?

Here are some examples of what you want to accomplish:

  • 42.52 --> 42
  • 21.99999 --> 22
  • -0.1 --> -1
  • -2 --> -2

Solution: If you have little time, here’s the most straightforward answer:

To round a positive or negative number x down in Python, apply integer division // to x and divide by 1. Specifically, the expression x//1 will first perform normal float division and then throw away the remainder—effectively “rounding x down”.

In general, there are multiple ways to round a float number x down in Python:

  • Vanilla Python: The expression x//1 will first perform normal division and then skip the remainder—effectively “rounding x down”.
  • Round down: The math.floor(x) function rounds number x down to the next full integer.
  • Round down (float representation): Alternatively, numpy.floor(x) rounds down and returns a float representation of the next full integer (e.g., 2.0 instead of 2).
  • Round up: The math.ceil(x) function rounds number x up to the next full integer.
  • Round up and down: The Python built-in round(x) function rounds x up and down to the closest full integer.

Let’s dive into each of those and more options in the remaining article. I guarantee you’ll get out of it having learned at least a few new Python tricks in the process!

Method 1: Integer Division (x//1)

The most straightforward way to round a positive or negative number x down in Python is to use integer division // by 1. The expression x//1 will first perform normal division and then skip the remainder—effectively “rounding x down”.

For example:

  • 42.52//1 == 42
  • 21.99//1 == 21
  • -0.1//1 == -1
  • -2//1 == -2

This trick works for positive and negative numbers—beautiful isn’t it? 🌻

Here are a couple of Python code examples:

def round_down(x):
    return x//1

print(round_down(42.52))
# 42

print(round_down(21.99999))
# 21

print(round_down(-0.1))
# -1

print(round_down(-2))
# -2

🎓 Info: The double-backslash // operator performs integer division and the single-backslash / operator performs float division. An example for integer division is 40//11 = 3. An example for float division is 40/11 = 3.6363636363636362.

Feel free to watch the following video for some repetition or learning:

Method 2: math.floor()

To round a number down in Python, import the math library with import math, and call math.floor(number).

The function returns the floor of the specified number that is defined as the largest integer less than or equal to number.

💡 Note: The math.floor() function correctly rounds down floats to the next-smaller full integer for positive and negative integers.

Here’s a code example that rounds our five numbers down to the next-smaller full integer:

import math


print(math.floor(42.52))
# 42

print(math.floor(21.99999))
# 21

print(math.floor(-0.1))
# -1

print(math.floor(-2))
# -2

The following video shows the math.floor() as well as the math.ceil() functions — feel free to watch it to gain a deeper understanding:

Method 3: np.floor()

To round a number down in Python, import the NumPy library with import numpy as np, and call np.floor(number).

The function returns the floor of the specified number that is defined as the largest integer less than or equal to number.

Here’s an example:

import numpy as np


print(np.floor(42.52))
# 42.0

print(np.floor(21.99999))
# 21.0

print(np.floor(-0.1))
# -1.0

print(np.floor(-2))
# -2.0

Both math.floor() and np.floor() round down to the next full integer. The difference between math.floor() and np.floor() is that the former returns an integer and the latter returns a float value.

Method 4: int(x)

Use the int(x) function to round a positive number x>0 down to the next integer. For example, int(42.99) rounds 42.99 down to the answer 42.

Here’s an example for positive numbers where int() will round down:

print(int(42.52))
# 42

print(int(21.99999))
# 21

However, if the number is negative, the function int() will round up! Here’s an example for negative numbers:

print(int(-0.1))
# 0

print(int(-2))
# -2

Before I show you how to overcome this limitation for negative numbers, feel free to watch my explainer video on this function here:

Method 5: int(x) – bool(x%1)

You can also use the following vanilla Python snippet to round a number x down to the next full integer:

  • If x is positive, round down by calling int(x).
  • If x is negative, round up by calling int(x) - bool(x%1).

Explanation: Any non-zero expression passed into the bool() function will yield True which is represented by integer 1.

The modulo expression x%1 returns the decimal part of x.

  • If it is non-zero, we subtract bool(x%1) == 1, i.e., we round down.
  • If it is zero (for whole numbers), we subtract bool(x%1) == 0, i.e., we’re already done.

Here’s what this looks like in a simple Python function:

def round_down(x):
    if x<0:
        return int(x) - bool(x%1)
    return int(x)

print(round_down(42.52))
# 42

print(round_down(21.99999))
# 21

print(round_down(-0.1))
# -1

print(round_down(-2))
# -2

Alternatively, you can use the following slight variation of the function definition:

def round_down(x):
    if x<0:
        return int(x) - int(x)!=x
    return int(x)

Method 6: round()

This method is probably not exactly what you want because it rounds a number up and down, depending on whether the number is closer to the smaller or larger next full integer. However, I’ll still mention it for comprehensibility.


Python’s built-in round() function takes two input arguments:

  • a number and
  • an optional precision in decimal digits.

It rounds the number to the given precision and returns the result. The return value has the same type as the input number—or integer if the precision argument is omitted.

Per default, the precision is set to 0 digits, so round(3.14) results in 3.

Here are three examples using the round() function—that show that it doesn’t exactly solve our problem.

import math


print(round(42.42))
# 42

print(round(21.00001))
# 21

print(round(-0.1))
# 0

Again, we have a video on the round() function — feel free to watch for maximum learning!

Python One-Liners Book: Master the Single Line First!

Python programmers will improve their computer science skills with these useful one-liners.

Python One-Liners

Python One-Liners will teach you how to read and write “one-liners”: concise statements of useful functionality packed into a single line of code. You’ll learn how to systematically unpack and understand any line of Python code, and write eloquent, powerfully compressed Python like an expert.

The book’s five chapters cover (1) tips and tricks, (2) regular expressions, (3) machine learning, (4) core data science topics, and (5) useful algorithms.

Detailed explanations of one-liners introduce key computer science concepts and boost your coding and analytical skills. You’ll learn about advanced Python features such as list comprehension, slicing, lambda functions, regular expressions, map and reduce functions, and slice assignments.

You’ll also learn how to:

  • Leverage data structures to solve real-world problems, like using Boolean indexing to find cities with above-average pollution
  • Use NumPy basics such as array, shape, axis, type, broadcasting, advanced indexing, slicing, sorting, searching, aggregating, and statistics
  • Calculate basic statistics of multidimensional data arrays and the K-Means algorithms for unsupervised learning
  • Create more advanced regular expressions using grouping and named groups, negative lookaheads, escaped characters, whitespaces, character sets (and negative characters sets), and greedy/nongreedy operators
  • Understand a wide range of computer science topics, including anagrams, palindromes, supersets, permutations, factorials, prime numbers, Fibonacci numbers, obfuscation, searching, and algorithmic sorting

By the end of the book, you’ll know how to write Python at its most refined, and create concise, beautiful pieces of “Python art” in merely a single line.

Get your Python One-Liners on Amazon!!