eugenden.github.io

Округление числовых значений

Когда обращаешься к округлению важно определить к какому случаю относится ситуация:

Простое округление

Для простого округления используйте встроенную функцию round(value, ndigits).

print round(2.3333, 1)
print round(2.3333, 2)
print round(2.3333, 3)
# 2.3
# 2.33
# 2.333

Помните, что выходное число будет всегда float.

print round(0.1234)
print round(1.22)
# 0.0
# 1.0

Важно учесть, что при пограничных значениях приоритет отдаётся нечётным числам

print round(6.65, 1)
print round(1.335, 2)
print round(1.355, 2)
# 6.7
# 1.33
# 1.35

Передаваемый параметр может быть отрицательным, в этом случае округление будет идти до десятков, сотен, тысяч и т.д.

print round(123456, -1)
print round(123456, -2)
print round(123456, -3)
# 123460.0
# 123500.0
# 123000.0

форматирование выходных значений

Для форматирования значений для вывода используйте format:

print format(1.12345, '0.2f')
print format(2.1234, '1f')
print format(2.1234, '0.12f')
# 1.12
# 2.123400
# 2.123400000000

Точные расчёты

Можно провести эскперимент:

Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
>>> 2.1 + 4.2
6.300000000000001
>>> print 2.1 + 4.2
6.3

Чтобы выйти за рамки стандарта представления чисел с плавающей точки используйте дополнительные модули, например decimal.