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

python python-2.7 math syntax operators

116423 просмотра

12 ответа

80500 Репутация автора

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

>>> 4 / 100
0

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

Автор: Ray Vega Источник Размещён: 22.09.2008 08:06

Ответы (12)


1 плюс

21231 Репутация автора

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

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

1 плюс

10893 Репутация автора

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

или же

4,0 / 100

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

3 плюса

58844 Репутация автора

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

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

121 плюса

59023 Репутация автора

Решение

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

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

7 плюса

92188 Репутация автора

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

4.0/100.0

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

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

0 плюса

16724 Репутация автора

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

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

24 плюса

26534 Репутация автора

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

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

4 плюса

317267 Репутация автора

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

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

1 плюс

21 Репутация автора

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

from __future__ import division

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

-3 плюса

6 Репутация автора

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

from__future__ import division
Автор: T. Samuel Размещён: 22.02.2018 10:15

0 плюса

1 Репутация автора

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

# 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 плюса

1 Репутация автора

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

4,0 / 100,0

Автор: Appu Размещён: 08.02.2019 11:35
Вопросы из категории :
32x32