Подтвердить что ты не робот

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

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

>>> 4 / 100
0

Однако, я хочу, чтобы он возвращал 0.04. Что я использую?

4b9b3361

Ответ 1

Существует три варианта:

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

который является тем же самым поведением, что и C, С++, Java и т.д., или

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

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

$ python -Qnew
>>> 4 / 100
0.04

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

Изменить: добавлен раздел о -Qnew, благодаря ΤΖΩΤΖΙΟΥ!

Ответ 2

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

>>> 0.4/100.
0.0040000000000000001

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

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

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

Ответ 3

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

4.0/100.0

В качестве альтернативы включите функцию, которая будет использоваться по умолчанию в Python 3.0, "true division", которая делает то, что вы хотите. В верхней части модуля или script выполните следующие действия:

from __future__ import division

Ответ 4

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

>>> 4/100.0
0.040000000000000001

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

или

4.0/100

Ответ 8

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

Ответ 9

Пожалуйста, рассмотрите следующий пример

float tot=(float)31/7;