Как получить десятичное значение при использовании оператора разделения в Python?
Например, стандартный символ разделения '/' округляется до нуля:
>>> 4 / 100
0
Однако, я хочу, чтобы он возвращал 0.04. Что я использую?
Ответы
Ответ 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;