Это что-то, что появилось в моем сознании. Почему бы нам не преобразовать его в строку, а потом поместить его?
import math
def floor_float(x, index):
sx = str(x)
sx = sx[:index]+str(math.floor(float(sx[index]+"."+sx[index+1])))
return float(sx)
Немного преимущество состоит в том, что это более representating ошибки доказательства, что более точно в representating числа (так как это строка):
>>> floor_float(10.8976540981, 8)
10.897654
Это может быть, не самым лучшим вещего решения, хотя. . Но это работает достаточно хорошо :)
Update
В Python 2.x, math.floor
Ретур ns float вместо integer. Для того, чтобы сделать эту работу вы будете конвертировать результат, в целое число:
sx = sx[:index]+str(int(math.floor(float(sx[index]+"."+sx[index+1]))))
UPDATE2
Чтобы быть честным, код выше, в основном нонсенс, и слишком сложно;)
Так как это пол, вы можете просто обрезать строку, и плывут обратно:
def floor_float(x, i):
return float(str(x)[:i])
"округлением вниз" вы имеете в виду по отношению к 0 или к отрицательной бесконечности? Это имеет значение для отрицательных чисел (например, «floor (-3.1) == -4.0'). –
Кстати, это как раз то, как круглый ведет себя, так как .876 ближе к 0,88, чем 0,87. Почему вы хотите, чтобы он пола? – aIKid
Интересный вопрос. – aIKid