@anya_hacker

Как убрать дробную часть, не округляя число?

Из числа 0.15771428571428572 требуется убрать дробную часть после первого знака после запятой без округления, т.е.:
0.15771428571428572 = 0.1
0.20152380952380952 = 0.2
0.19123809523809523 = 0.1
Но в третьем случае почему-то округляется до 0.2.
print(414 / 2625) # 0.15771428571428572
print(float('{:.1f}'.format(414 / 2625))) # 0.2

Как сделать так, чтобы он отбрасывал всё, кроме первого знака после запятой, не округляя?
  • Вопрос задан
  • 3601 просмотр
Решения вопроса 1
danila763
@danila763
Учу python, sql
Ну например так:
num = str(num)
print(num[:num.find('.')+2])
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
«В лоб» можно так:
data = [0.15771428571428572,
0.20152380952380952,
0.19123809523809523]
for i in data:
    i = (i // 0.1) * 0.1
    print(i)
Ответ написан
Комментировать
@okalash
Как насчет костыля?)
num = 0.15771428571428572
print(float(str(num)[:3]))

Вывод:
0.1


num = 0.20152380952380952
print(float(str(num)[:3]))

Вывод:
0.2
Ответ написан
shurshur
@shurshur
Сисадмин, просто сисадмин...
Самый лёгкий способ безо всяких приведений к строке: умножить на 10, округлить вниз, разделить на 10.

x = 0.19123809523809523
y = math.floor(x*10)/10
print (y) # 0.1


Но не очень понимаю смысл такого действия. Ведь 0.19 по сравнению с 0.1 это почти в два раза разница...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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