**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!

Table of Contents

## 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* 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

**. You’ll learn about advanced Python features such as**

*boost your coding and analytical skills**,*

**list comprehension****,**

*slicing***,**

*lambda functions***,**

*regular expressions***and**

*map***functions, and**

*reduce***.**

*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!!*

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.

To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.

His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.