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

<p>например, стандартный символ деления '/' округляет до нуля:</p><pre><code>>>> 4 / 100 0 </code></pre><p>тем не менее, я хочу вернуть 0.04. что я использую?</p>

<p>есть три варианта:</p><pre><code>>>> 4 / float(100) 0.04 >>> 4 / 100.0 0.04 </code></pre><p>что такое же поведение, как c, c++, java и т. д., или </p><pre><code>>>> from \_\_future\_\_ import division >>> 4 / 100 0.04 </code></pre><p>вы также можете активировать это поведение, передавая аргумент <code>-qnew</code> интерпретатору python:</p><pre><code>$ python -qnew >>> 4 / 100 0.04 </code></pre><p>второй вариант будет по умолчанию в python 3.0. если вы хотите использовать старое целочисленное деление, вы должны использовать оператор <code>//</code>. </p><p><strong>edit</strong>: добавлен раздел о <code>-qnew</code>, благодаря <a href="https://stackoverflow.com/users/6899/">τζωτζιου</a> !</p>

<p>другие ответы предлагают, как получить значение с плавающей точкой. хотя это будет близко к тому, что вы хотите, оно не будет точным:</p><pre><code>>>> 0.4/100. 0.0040000000000000001 </code></pre><p>если вы действительно хотите<em> десятичное </em>значение, сделайте это:</p><pre><code>>>> import decimal >>> decimal.decimal('4') / decimal.decimal('100') decimal("0.04") </code></pre><p>это даст вам объект, который правильно знает, что 4/100 в<em> база 10 </em>равна "0,04". числа с плавающей запятой фактически находятся в базе 2, то есть в двоичном, а не в десятичном виде.</p>

<p>сделайте одно или оба условия числом с плавающей запятой, например, так:</p><pre><code>4.0/100.0 </code></pre><p>в качестве альтернативы, включите функцию, которая будет по умолчанию в python 3.0, «истинное разделение», которая делает то, что вы хотите. в верхней части вашего модуля или скрипта выполните:</p><pre><code>from \_\_future\_\_ import division </code></pre>

<p>возможно, вы захотите взглянуть и на пакет python <a href="http://docs.python.org/lib/module-decimal.html">decimal</a> . это обеспечит хорошие десятичные результаты.</p><pre><code>>>> decimal.decimal('4')/100 decimal("0.04") </code></pre>

<p>вы должны указать python использовать значения с плавающей точкой, а не целые числа. вы можете сделать это, просто используя десятичную точку во входных данных:</p><pre><code>>>> 4/100.0 0.040000000000000001 </code></pre>

<p>попробуйте 4.0/100</p>

<p>простой маршрут 4/100.0 </p><p>или же</p><p>4,0/100</p>

<p>здесь у нас есть два возможных случая, приведенных ниже </p><pre><code>from \_\_future\_\_ import division print(4/100) print(4//100) </code></pre>

<p>вы также можете попробовать добавить «.0» в конце числа.</p><p>4,0/100,0</p>

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

<p>добавьте следующую функцию в ваш код с обратным вызовом.</p><pre><code># 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 </code></pre><p>эта функция работает на основе «алгоритма деления евклида». эта функция очень полезна, если вы не хотите импортировать какие-либо внешние файлы заголовков в ваш проект.</p><p>синтаксис: деление ([делитель], [делитель], [десятичное место (необязательно))</p><p>код: <code>divide(1, 7, 10)</code> or <code>divide(1, 7)</code></p><p>комментарий ниже для любых запросов.</p>