#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
и afloat
возвращает afloat
независимо от того, может ли результат быть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