KsenoS
@KsenoS
Интересуюсь web, и Unity разработкой

Почему при формате int в Python выводит число с плавающей точкой (Float)?

Суть такая, я делаю программу, которая при нечётном числе, которое ввёл пользователь делит его на 2 и округляет в большую сторону. Я реализовал проверку на чётность-нечётность, с помощью If...Else, но когда пользователь вводит чётное число (например, 10), то это число выводиться в виде числа с плавающей точкой. С нечётными такого не наблюдалось. Подскажите как сделать чтобы чётное число выводилось в формате int. Это очень важно для меня, я новичёк, поэтому плохо шарю
import math
n = int(input())
if n % 2 == 0:
     n = n/2
     print(n)
else:
    c = math.ceil(n / 2)
    c = int(c)
    print(c)
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@twistfire92
n = n/2
В этой строке ты делишь число на 2. При такой операции тебе возвращается тип float. Можешь обернуть его еще раз в int() перед печатью

И конкретно в твоем случае можно обойтись без math. Можно воспользоваться целочисленным делением (// в python) и прибавить 1, если нужно округление в большую сторону. Но это только в случае если делишь на 2.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
yupiter7575
@yupiter7575
Python программист
math.ceil() округляет и возвращает в вашем случае целое число. Вам незачем еще раз переводить его в int:
>>> import math
>>> num = math.ceil(5 / 2)
>>> num
3


А у вас код не работает потому что срабатывает условие - n/2 возвращает float
Ответ написан
@Anonymous5454587
import math
n = int(input())
if n % 2 == 0:
     n = n/2
     print(int(n))
else:
    c = math.ceil(n / 2)
    print(c)
Ответ написан
Ваш ответ на вопрос

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

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