copyerfiled
@copyerfiled

Как отбросить часть дроби после точки?

Добрый день!
Подскажите, как в python3 отбросить часть дроби после точки, указав, сколько символов должно быть. По аналогии с round, только он не подходит так как округляет в плюс.
Например:
>>> var1 = round(0.0019, 3)
>>> print(var1)
0.002

а нужно 0.001

Заранее неизвестно сколько знаков там будет может 0.2342354324 а может 0.1 должно корректно работать.
Спасибо!
  • Вопрос задан
  • 5950 просмотров
Решения вопроса 6
longclaps
@longclaps
Какой-то лютый банголорский звиздец помечен решением (
def truncate(f, n):
    s = "%.20f" % f
    return s[:s.find('.') + n + 1]
Ответ написан
@Olgeir
#f- число, n - количество знаков после запятой, которое оставляем

def t (f,n):
return ((f * 10**n) // 1) / 10**n
Ответ написан
Mesolaries
@Mesolaries
Junior Python Developer
Нашел такую функцию:
def truncate(f, n):
    '''Truncates/pads a float f to n decimal places without rounding'''
    s = '{}'.format(f)
    if 'e' in s or 'E' in s:
        return '{0:.{1}f}'.format(f, n)
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])


Где f это само число, а n это сколько цифр хотите после точки.

Так же можно использовать format(number, '.xf'). Где вместо x нужно указать сколько символов оставить после точки. Но этот метод округляет последное число.

Источник: https://stackoverflow.com/questions/783897/truncat...
Ответ написан
zooks
@zooks
Frontend
import math
def my_floor(x, n):
	return math.floor(x * 10 ** n) / ( 10 ** n)
Ответ написан
@Bruceee
def truncate(f, n):
	even, broken = str(f).split('.')
	return float(even + '.' + broken[0:n])
Ответ написан
Amunrah
@Amunrah
Сказочный персонаж ))
Понимаю что уже поздно, но для спортивного интереса тоже навоял ЭМО-вариант )))

num = int( num ) + float( str( num )[ str( num ).index( '.' ) : str( num ).index( '.' ) + 2 ] )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы