Функция round() - одна из самых полезных встроенных функций языка Python. Она позволяет легко и быстро округлять числа с плавающей точкой до нужной точности. В этой статье мы подробно разберем, как именно работает функция round(), рассмотрим конкретные примеры ее использования и особенности, о которых стоит знать.
Основы функции round()
Давайте начнем с синтаксиса и основных параметров функции round(). Ее синтаксис выглядит так:
round(number, ndigits)
Где:
- number - округляемое число (целое, дробное)
- ndigits - количество знаков после запятой для округления (по умолчанию 0)
Функция принимает любое число с плавающей точкой в качестве первого аргумента и округляет его с учетом значения второго аргумента ndigits. Давайте посмотрим, как это работает.
Начнем с простого примера без указания количества знаков после запятой. В этом случае round() округлит число до ближайшего целого:
round(3.489) -> 3
А вот если мы явно укажем ndigits, то получим округление до заданной точности. Например, до двух знаков после запятой:
round(3.489, 2) -> 3.49
Как видите, теперь число округлилось до сотых (до 3.49). А если задать ndigits=3, то будет округление уже до тысячных:
round(3.489, 3) -> 3.489
В целом, чем больше значение ndigits, тем выше точность округления. При ndigits=0 округляется до целых.
Возвращаемое значение
Если мы не передаем значение ndigits, то функция round() возвращает целочисленный результат. Но если задано конкретное количество знаков после запятой, то возвращается число с плавающей точкой.
Кроме того, пользовательские типы данных в Python могут определять собственный способ округления с помощью метода __round__(). Это позволяет гибко настраивать правила округления для классов.
Особенности округления в Python
Есть одна особенность округления в round(), о которой стоит знать. При некоторых дробных значениях результат может быть неожиданным. Рассмотрим пример:
round(2.675, 2) вернет 2.67 вместо ожидаемого 2.68
Причина в том, что presentation десятичных дробей в плавающей точке не может быть абсолютно точной. Поэтому при округлении таких "неточных" значений мы получаем странный на первый взгляд результат.
Округление отрицательных чисел
Функция round() в Python округляет как положительные, так и отрицательные числа. При этом для отрицательных чисел действуют те же правила округления, что и для положительных:
round(-3.489) -> -3
Здесь число округлилось до ближайшего целого, как и для положительных значений.
Давайте посмотрим еще пример с указанием точности округления:
round(-3.489, 2) -> -3.49
Как видим, до сотых округлилось аналогично положительному варианту.
Округление датафреймов Pandas
Часто возникает необходимость округлить числовые данные внутри датафрейма Pandas. Это можно сделать следующим образом:
import pandas as pd data = {'value': [3.141592, 5.789]} df = pd.DataFrame(data) df = df.round(2)
Здесь мы округлили столбец value датафрейма df до 2 знаков после запятой с помощью метода round() объекта df.
Округление dateTime объектов
Функция round() также может округлять объекты даты и времени. Например, округлить datetime до секунд:
from datetime import datetime dt = datetime(2023, 2, 15, 18, 31, 42, 1055) dt_rounded = round(dt, 0)
В переменной dt_rounded будет храниться дата со временем округленным до секунд (без миллисекунд).