it-swarm.com.ru

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

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

>>> 4 / 100
0

Тем не менее, я хочу вернуть 0.04. Что я использую?

58
Ray Vega

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

>>> 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. Если вы хотите использовать старое целочисленное деление, вы должны использовать оператор //

Edit: добавлен раздел о -Qnew, благодаря ΤΖΩΤΖΙΟΥ !

121
Torsten Marek

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

>>> 0.4/100.
0.0040000000000000001

Если вы действительно хотите десятичное значение, сделайте это:

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

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

24
Glyph

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

4.0/100.0

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

from __future__ import division
7
Thomas Wouters

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

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

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

>>> 4/100.0
0.040000000000000001
3
moonshadow

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

1
Martin Cote

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

или же

4,0/100

1
torial

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

from __future__ import division

print(4/100)
print(4//100)
1
Jai Narayan Singh

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

4,0/100,0

1
Appu

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

0
Vasil

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

# 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) OR divide(1, 7)

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

0
DaredevilRanon