Закруглить число с плавающей точкой до ближайшего целого?

Как следует из названия, я хочу взять число с плавающей запятой и округлить его до ближайшего целого. Однако, если это не целое, я ВСЕГДА хочу округлить переменную, независимо от того, насколько она близка к следующему целому. Есть ли способ сделать это?

9 Solutions collect form web for “Закруглить число с плавающей точкой до ближайшего целого?”

просто

print int(x) 

также будет работать.

Один из них должен работать:

 import math math.trunc(1.5) > 1 math.trunc(-1.5) > -1 math.floor(1.5) > 1 math.floor(-1.5) > -2 

Я думаю, вам нужна функция пола:

Math.floor (х)

Чтобы получить результат с плавающей запятой, просто используйте:

 round(x-0.5) 

Он работает и для отрицательных чисел.

Если вы не хотите импортировать математику, вы можете использовать:

int(round(x))

Вот часть документации:

 >>> help(round) Help on built-in function round in module __builtin__: round(...) round(number[, ndigits]) -> floating point number Round a number to a given precision in decimal digits (default 0 digits). This always returns a floating point number. Precision may be negative. 

многие люди говорят:

  int(x) 

и это работает нормально для большинства случаев, но есть небольшая проблема. Если результат OP:

  x = 1.9999999999999999 

он будет

  x = 2 

после 16-го 9-го раунда. Это не имеет большого значения, если вы уверены, что никогда не столкнетесь с такой ситуацией. Но это то, что нужно помнить.

Это может быть очень просто, но не могли бы вы просто округлить его до минус 1? Например:

 number=1.5 round(number)-1 > 1 

Если вы работаете с numpy, вы можете использовать следующее решение, которое также работает с отрицательными номерами (оно также работает с массивами)

 import numpy as np def round_down(num): if num < 0: return -np.ceil(abs(num)) else: return np.int32(num) round_down = np.vectorize(round_down) 

 round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6]) > array([-2., -2., -2., 0., 1., 1., 1.]) 

Я думаю, что это также сработает, если вы просто используете math модуль вместо numpy модуля.

Не знаю, решите ли вы это, но я просто наткнулся на этот вопрос. Если вы хотите избавиться от десятичных точек, вы можете использовать int (x) и устранить все десятичные цифры. Нет необходимости использовать раунд (x).

Python - лучший язык программирования в мире.