Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] How to Round a Number Down in Python?
1
How to Round a Number Down in Python?

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

Here are some examples of what you want to accomplish:
  • Code:
    42.52 --> 42

  • Code:
    21.99999 --> 22

  • Code:
    -0.1 --> -1

  • Code:
    -2 --> -2

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

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

In general, there are multiple ways to round a float number
Code:
x
down in Python:
  • Vanilla Python: The expression
    Code:
    x//1
    will first perform normal division and then skip the remainder—effectively “rounding
    Code:
    x
    down”.

  • Round down: The
    Code:
    math.floor(x)
    function rounds number
    Code:
    x
    down to the next full integer.

  • Round down (float representation): Alternatively,
    Code:
    numpy.floor(x)
    rounds down and returns a float representation of the next full integer (e.g.,
    Code:
    2.0
    instead of
    Code:
    2
    ).

  • Round up: The
    Code:
    math.ceil(x)
    function rounds number
    Code:
    x
    up to the next full integer.

  • Round up and down: The Python built-in
    Code:
    round(x)
    function rounds
    Code:
    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
Code:
x
down in Python is to use integer division
Code:
//
by
Code:
1
. The expression
Code:
x//1
will first perform normal division and then skip the remainder—effectively “rounding
Code:
x
down”.

For example:
  • Code:
    42.52//1 == 42

  • Code:
    21.99//1 == 21

  • Code:
    -0.1//1 == -1

  • Code:
    -2//1 == -2

This trick works for positive and negative numbers—beautiful isn’t it? [Image: 1f33b.png]

Here are a couple of Python code examples:

Code:
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

[Image: 1f393.png] Info: The double-backslash
Code:
//
operator performs integer division and the single-backslash
Code:
/
operator performs float division. An example for integer division is
Code:
40//11 = 3
. An example for float division is
Code:
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
Code:
math
library with
Code:
import math
, and call
Code:
math.floor(number)
.

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

[Image: 1f4a1.png] Note: The
Code:
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:

Code:
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
Code:
math.floor()
as well as the
Code:
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
Code:
import numpy as np
, and call
Code:
np.floor(number)
.

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

Here’s an example:

Code:
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
Code:
math.floor()
and
Code:
np.floor()
round down to the next full integer. The difference between
Code:
math.floor()
and
Code:
np.floor()
is that the former returns an integer and the latter returns a float value.

Method 4: int(x)

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

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

Code:
print(int(42.52)) # 42 print(int(21.99999)) # 21

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

Code:
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
Code:
x
down to the next full integer:
  • If
    Code:
    x
    is positive, round down by calling
    Code:
    int(x)
    .

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

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

The modulo expression
Code:
x%1
returns the decimal part of
Code:
x
.
  • If it is non-zero, we subtract
    Code:
    bool(x%1) == 1
    , i.e., we round down.

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

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

Code:
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:

Code:
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
Code:
round()
function takes two input arguments:
  • a
    Code:
    number
    and

  • an optional
    Code:
    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
Code:
precision
argument is omitted.

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

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

Code:
import math print(round(42.42)) # 42 print(round(21.00001)) # 21 print(round(-0.1)) # 0

Again, we have a video on the
Code:
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.

[Image: 3D_cover-1024x944.jpg]

Python One-Linerswill 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!!
Reply

Users browsing this thread:
1 Guest(s)


Forum Jump: