Как получить десятичное значение при использовании оператора деления в Python?

Например, стандартный символ деления '/' округляется до нуля:

>>> 4 / 100
0

Однако я хочу вернуть 0,04. Что я использую?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
65
0
155 005
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Попробуйте 4.0 / 100

Простой маршрут 4 / 100.0

или же

4,0 / 100

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

>>> 4/100.0
0.040000000000000001
Ответ принят как подходящий

Есть три варианта:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

что такое же поведение, как у C, C++, Java и т. д. или

>>> from __future__ import division
>>> 4 / 100
0.04

Вы также можете активировать это поведение, передав аргумент -Qnew интерпретатору Python:

$ python -Qnew
>>> 4 / 100
0.04

Второй вариант будет использоваться по умолчанию в Python 3.0. Если вы хотите использовать старое целочисленное деление, вы должны использовать оператор //.

Редактировать: добавлен раздел про -Qnew, спасибо ΤΖΩΤΖΙΟΥ!

Пожалуйста, также добавьте доступность опции командной строки python -Q new, чтобы ваш ответ был более полным.

tzot 23.09.2008 13:26

Это дает значение с плавающей запятой, а не десятичное значение. См. Ответ Глифа.

Jim 23.09.2008 19:19

Вы также можете использовать from __future__ import division в исходном коде.

Mechanical snail 23.03.2012 08:56

И все же люди говорят, что python - отличный язык программирования для математики ... Я не знаю, что здесь хуже, используя специальный импорт, который может изменить поведение, если его удалить, или указав везде операцию с плавающей запятой.

Vadorequest 18.11.2018 18:05

Сделайте один или оба термина числом с плавающей запятой, например:

4.0/100.0

В качестве альтернативы включите функцию, которая будет по умолчанию в Python 3.0, «истинное деление», которая сделает то, что вы хотите. В верхней части модуля или скрипта выполните:

from __future__ import division

Вы не можете получить десятичное значение, разделив одно целое число на другое, вы всегда получите целое число (результат будет усечен до целого). Вам нужно, чтобы хотя бы одно значение было десятичным числом.

Обратите внимание, что в Python 3.0 этого больше не будет, если вы используете /.

Torsten Marek 23.09.2008 00:13

Другие ответы подсказывают, как получить значение с плавающей запятой. Хотя это будет близко к тому, что вы хотите, это не будет точно:

>>> 0.4/100.
0.0040000000000000001

Если вам действительно нужно значение десятичный, сделайте следующее:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

Это даст вам объект, который правильно знает, что 4/100 в база 10 равно «0,04». Числа с плавающей запятой на самом деле имеют основание 2, то есть двоичное, а не десятичное.

Вы также можете посмотреть пакет Python десятичный. Это даст хорошие десятичные результаты.

>>> decimal.Decimal('4')/100
Decimal("0.04")

Здесь у нас есть два возможных случая, приведенных ниже

from __future__ import division

print(4/100)
print(4//100)

для python3 вам не требуется, чтобы строка деления импорта просто использовала операторы печати для python2, вам нужно явно добавить оператор импорта

Jai Narayan 08.01.2018 10:38

Импортировать разделение из будущей библиотеки следующим образом:

from__future__ import division

Пожалуйста, добавьте подробности, почему это решит исходную проблему, и, возможно, какие недостатки у этого подхода.

Murphy 22.02.2018 16:57

Оператор деления @Murphy не предустановлен в старой версии python. вам не нужно импортировать деление при использовании версий 3.4,3.5 или 3.6

T. Samuel 23.02.2018 11:01

Оператор деления @Murphy не предустановлен в старой версии python. вам не нужно импортировать деление при использовании версий 3.4,3.5 или 3.6

T. Samuel 23.02.2018 11:03

Добавьте в свой код следующую функцию с ее обратным вызовом.

# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
    quotient = number_one/number_two
    remainder = number_one % number_two
    if remainder != 0:
        quotient_str = str(quotient)
        for loop in range(0, decimal_place):
            if loop == 0:
                quotient_str += "."
            surplus_quotient = (remainder * 10) / number_two
            quotient_str += str(surplus_quotient)
            remainder = (remainder * 10) % number_two
            if remainder == 0:
                break
        return float(quotient_str)
    else:
        return quotient
#Ending of the function

# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428

Эта функция работает на основе «алгоритма деления Евклида». Эта функция очень полезна, если вы не хотите импортировать какие-либо внешние файлы заголовков в свой проект.

Синтекс: разделить ([делитель], [делитель], [десятичный знак (необязательно))

Код: divide(1, 7, 10) ИЛИ divide(1, 7).

Комментарий ниже для любых запросов.

Вы также можете попробовать добавить «.0» в конце числа.

4,0 / 100,0

Это только отбрасывание дробной части после десятичной. Вы пробовали: 4.0 / 100

Другие вопросы по теме