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

python python-2.7 math syntax operators

116423 просмотра

12 ответа

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

>>> 4 / 100
0

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

Автор: Ray Vega Источник Размещён: 17.05.2019 03:09

Ответы (12)


121 плюса

Решение

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

>>> 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, благодаря ΤΖΩΤΖΙΟΥ !

Автор: Torsten Marek Размещён: 22.09.2008 08:08

24 плюса

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

>>> 0.4/100.
0.0040000000000000001

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

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

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

Автор: Glyph Размещён: 22.09.2008 09:12

7 плюса

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

4.0/100.0

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

from __future__ import division
Автор: Thomas Wouters Размещён: 22.09.2008 08:08

4 плюса

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

>>> decimal.Decimal('4')/100
Decimal("0.04")
Автор: S.Lott Размещён: 22.09.2008 09:38

3 плюса

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

>>> 4/100.0
0.040000000000000001
Автор: moonshadow Размещён: 22.09.2008 08:07

1 плюс

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

Автор: Martin Cote Размещён: 22.09.2008 08:07

1 плюс

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

или же

4,0 / 100

Автор: torial Размещён: 22.09.2008 08:07

1 плюс

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

from __future__ import division

print(4/100)
print(4//100)
Автор: Jai Narayan Singh Размещён: 08.01.2018 06:51

0 плюса

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

Автор: Vasil Размещён: 22.09.2008 08:11

0 плюса

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

# 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)

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

Автор: DaredevilRanon Размещён: 04.07.2018 08:28

0 плюса

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

4,0 / 100,0

Автор: Appu Размещён: 08.02.2019 11:35

-3 плюса

Разделение импорта из будущей библиотеки:

from__future__ import division
Автор: T. Samuel Размещён: 22.02.2018 10:15
Вопросы из категории :
32x32