h = int(input())
a = int(input())
b = int(input())
n=(h-b)/(a-b)
print(n)
Python
Почему Python 3.9 выдает целое число с 0 в разряде десятых? (вместо 8 выдает 8.0)
Потому, что операция / в Python - вещественное деление. А вещественное число выводится с дробной частью.
Хочешь целочисленное деление в котором дробной части нет - используй //
Хочешь целочисленное деление в котором дробной части нет - используй //
Деление дает вещественное число, потому и дробная часть
Переведи результат в инт, или используй форматирование принта
Переведи результат в инт, или используй форматирование принта
Если значение всегда должно быть целым числом, используй целочисленные операции, в т.ч. деление // вместо /.
Если число может быть целым или дробным, но целое надо выводить, как целое, а дробное - как дробное, то есть два пути:
1) Смотрим, равно ли число самому себе с отброшенной дробной частью:
2) Отрезаем нули и точку с конца строкового представления числа, если есть нули:
Оба способа выглядят нелепо для "языка с батарейками в комплекте", но я ничего приличнее не нашёл, а рылся долго, когда мне это было нужно. Можно оформить форматирование функцией, чтобы не писать каждый раз эти заклинания.
Есть и третий способ: использовать не float, а decimal, который хранит точное количество значащих цифр. Но здесь придётся серьёзно пересмотреть подход своей программы к вычислениям, что может выйти далеко за рамки просто форматирования результата.
Если число может быть целым или дробным, но целое надо выводить, как целое, а дробное - как дробное, то есть два пути:
1) Смотрим, равно ли число самому себе с отброшенной дробной частью:
print(int(n) if n == int(n) else n)
2) Отрезаем нули и точку с конца строкового представления числа, если есть нули:
print(str(n).rtrim('0').rtrim('.'))
Оба способа выглядят нелепо для "языка с батарейками в комплекте", но я ничего приличнее не нашёл, а рылся долго, когда мне это было нужно. Можно оформить форматирование функцией, чтобы не писать каждый раз эти заклинания.
Есть и третий способ: использовать не float, а decimal, который хранит точное количество значащих цифр. Но здесь придётся серьёзно пересмотреть подход своей программы к вычислениям, что может выйти далеко за рамки просто форматирования результата.
А что вы хотели? Оператор / давал число без плавающей точки в Питоне 2. В Питоне 3 это странное недоразумение логичным образом устранили
Python использует двоичную систему счисления для представления чисел с плавающей точкой. Поэтому при выводе чисел с плавающей точкой могут возникать неточности из-за округления. В вашем случае, Python выдает число с плавающей точкой, потому что результат деления (h-b)/(a-b) является числом с плавающей точкой. Если вы хотите получить целое число, то можно использовать функцию round() для округления до ближайшего целого числа:
h = int(input())
a = int(input())
b = int(input())
n = round((h-b)/(a-b))
print(n)
h = int(input())
a = int(input())
b = int(input())
n = round((h-b)/(a-b))
print(n)
Добрый Кот
Вставил ваш код с round все также на выходе 8.0. Есть ещё способы?
Похожие вопросы
- Python Имеется неупорядоченный массив из n различных целых чисел от 0 до n (0,1,…,j-1,j+1,….,n).
- Нейронные сети на Python 3.4
- Помогите с программой на Python. Сколько существует десятичных трёхзначных чисел, в которых только одна цифра кратна 3?
- Python задача "Игра с числами"
- Не совсем понимаю Python, да и в целом программирование. Стоит продолжать?
- Даны три целых числа. Определите, сколько среди них
- Почему Python такой сложный?
- Задача в питоне!!!!!! Дано целое число n (n находится в диапазоне от 1 до 99), определяющее возраст человека в годах.
- Почему Python считается легким языком программирования ?
- Деление с остатком и выражение if в python 3