Это не странное поведение из round()
:
Попробуйте:
>>> 2/3
0
Использование /
с двумя целочисленными значениями приведет к целочисленному делению.Таким образом, аргумент до round()
равен уже 0, что делает round()
возвращаемым 0.
Обновление: , как @Mark отметил вкомментарий, это поведение изменилось в Python 3 : 2/3
будет выполнять деление с плавающей запятой, как 2.0/3
делает в Python 2. 2//3
может использоваться для получения целочисленного поведения деления в обеих версиях).
Ваш последний пример работает, потому что 2.0
не является целым числом, поэтому 2.0/3
выполнит «простое» деление с плавающей запятой:
>>> 2.0/3
0.6666666666666666