Как получить число без десятичных знаков?

#python #decimal

#python #десятичное

Вопрос:

 tunnid = int(input("Sisestage oma töötundide arv ühes nädalas: "))
tasu = int(input("Sisestage oma tunnitasu: "))

if tunnid <= 40:

    print("Teie nädalapalk on "   str(tunnid*tasu))

else:

    print("Teie nädalapalk on "   str(tunnid*tasu*1.5))
  

Если я умножу 60 * 10, как еще я должен получить 900, но программа выдает мне 900.0
Итак, мой вопрос в том, как удалить это .0 из ответа, что я должен изменить в своем коде?

p.s Я всего лишь новичок, так что не судите, пожалуйста 🙂

Комментарии:

1. Это даже не должно выполняться; вы не можете добавить строку и целое число. Разве вы не получаете TypeError?

2. Нет, оно работает нормально, я использую вещь под названием Thonny, кстати

3. Операция между int и a float возвращает a float независимо от того, может ли результат быть int точно представлен как an. Есть причина, по которой вас это волнует? Вы могли бы умножить на 3, затем разделить на (целое число) 2 (или просто передать результирующее значение с плавающей запятой в int , чтобы удалить нецелочисленную часть) и смириться с результирующей потерей точности, если произведение нечетное.

Ответ №1:

Просто преобразуйте число с помощью int :

 print('Teie nädalapalk on {}'.format(int(tunnid * tasu * 1.5)))
  

В качестве альтернативы вы можете использовать format мини-язык:

 print('Teie nädalapalk on {:.0f}'.format(tunnid * tasu * 1.5))
  

.0f Указывает, что число должно быть усечено до 0 десятичных знаков (т. е. целочисленное представление).

Ответ №2:

Самым простым способом будет приведение float значения к int . Например:

 >>> x = 100.0
>>> x = int(x)
>>> x
100
  

Следовательно, в вашем коде вы должны сделать:

 print("Teie nädalapalk on "   str(int(tunnid*tasu)))
# Note: "str(tunnid*tasu)" replaced with "str(int(tunnid*tasu))"
  

Ответ №3:

В принципе, вы хотите сделать свой ответ целым числом, если я прав, вы можете сделать это, приведя его к целому числу как:

 print("Teie nädalapalk on "   str(int(tunnid*tasu*1.5)))
  

это должно дать именно то, что вы хотите.
для получения дополнительной информации по преобразованию float в int или наоборот, вы можете обратиться сюдаPeterbe.com

Ответ №4:

Добавьте операцию приведения типов для преобразования float в int. Вместо str(tunnid*tasu*1.5) использования str(int(tunnid*tasu*1.5)) . Но это приведет к удалению десятичной части, даже если произведение не является целым числом. Если вы хотите также обработать этот случай, вам придется добавить дополнительную проверку.

if tunnid*tasu*1.5 - int(tunnid*tasu*1.5) > 1e-10:
print("Teie nädalapalk on " str(tunnid*tasu*1.5))
else
print("Teie nädalapalk on " str(int(tunnid*tasu*1.5)))

1e-10 — это очень маленькое число, просто чтобы проверить, не равна ли десятичная часть нулю. Вы могли бы уменьшить его еще больше.

Ответ №5:

 >>> num = 900.0  # tunnid * tasu * 1.5
>>> int(num) if num == int(num) else num
900
>>> num = 900.6  # tunnid * tasu * 1.5
>>> int(num) if num == int(num) else num
900.6