In addition to the built-in
round function, the
math module provides the
x = 1.55 y = -1.55 # round to the nearest integer round(x) # 2 round(y) # -2 # the second argument gives how many decimal places to round to (defaults to 0) round(x, 1) # 1.6 round(y, 1) # -1.6 # math is a module so import it first, then use it. import math # get the largest integer less than x math.floor(x) # 1 math.floor(y) # -2 # get the smallest integer greater than x math.ceil(x) # 2 math.ceil(y) # -1 # drop fractional part of x math.trunc(x) # 1, equivalent to math.floor for positive numbers math.trunc(y) # -1, equivalent to math.ceil for negative numbers
round always return a
round(1.3) # 1.0
round always breaks ties away from zero.
round(0.5) # 1.0 round(1.5) # 2.0
trunc always return an
Integral value, while
round returns an
Integral value if called with one argument.
round(1.3) # 1 round(1.33, 1) # 1.3
round breaks ties towards the nearest even number. This corrects the bias towards larger numbers when performing a large number of calculations.
round(0.5) # 0 round(1.5) # 2
As with any floating-point representation, some fractions cannot be represented exactly. This can lead to some unexpected rounding behavior.
round(2.675, 2) # 2.67, not 2.68!
Python (and C++ and Java) round away from zero for negative numbers. Consider:
>>> math.floor(-1.7) -2.0 >>> -5 // 2 -3