Например, стандартный символ разделения '/' округляется до нуля:
>>> 4 / 100
0
Однако, я хочу, чтобы он возвращал 0.04. Что я использую?
Например, стандартный символ разделения '/' округляется до нуля:
>>> 4 / 100
0
Однако, я хочу, чтобы он возвращал 0.04. Что я использую?
Существует три варианта:
>>> 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
, благодаря ΤΖΩΤΖΙΟΥ!
Другие ответы показывают, как получить значение с плавающей запятой. Хотя это будет близко к тому, что вы хотите, это будет неточно:
>>> 0.4/100.
0.0040000000000000001
Если вы действительно хотите десятичное значение, сделайте следующее:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
Это даст вам объект, который правильно знает, что 4/100 в базе 10 "0.04". Числа с плавающей запятой фактически находятся в базе 2, т.е. Двоичной, а не десятичной.
Сделайте одно или оба из них числом с плавающей запятой, например:
4.0/100.0
В качестве альтернативы включите функцию, которая будет использоваться по умолчанию в Python 3.0, "true division", которая делает то, что вы хотите. В верхней части модуля или script выполните следующие действия:
from __future__ import division
Вам нужно указать Python использовать значения с плавающей запятой, а не целые числа. Вы можете это сделать, просто используя десятичную точку на входах:
>>> 4/100.0
0.040000000000000001
Возможно, вы захотите посмотреть на пакет Python decimal. Это обеспечит хорошие десятичные результаты.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Попробуйте 4.0/100
Простой маршрут 4/100.0
или
4.0/100
Вы не можете получить десятичное значение, разделив одно целое на другое, вы все равно получите целое число (результат будет усечен до целого). Вам нужно как минимум одно значение десятичного числа.
Пожалуйста, рассмотрите следующий пример
float tot=(float)31/7;