round() returns different result depending on the number of arguments

  • A+

While using the round() function I noticed that I get two different results depending on whether I don't explicitly choose the number of decimal places to include or choosing the number to be 0.

x = 4.1 print(round(x)) print(round(x, 0)) 

It prints the following:

4 4.0 

What is the difference?


The round function returns an integer if the second argument is not specified, else the return value has the same type as that of the first argument:

>>> help(round) Help on built-in function round in module builtins:  round(number, ndigits=None)     Round a number to a given precision in decimal digits.      The return value is an integer if ndigits is omitted or None. Otherwise     the return value has the same type as the number. ndigits may be negative. 

So if the arguments passed are an integer and a zero, the return value will be an integer type:

>>> round(100, 0) 100 >>> round(100, 1) 100 

For the sake of completeness:

Negative numbers are used for rounding before the decimal place

>>> round(124638, -2) 124600 >>> round(15432.346, -2) 15400.0 


:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: