Например, стандартный символ деления '/' округляется до нуля:
>>> 4 / 100
0
Однако я хочу вернуть 0,04. Что я использую?






Попробуйте 4.0 / 100
Простой маршрут 4 / 100.0
или же
4,0 / 100
Вам нужно указать Python использовать значения с плавающей запятой, а не целые числа. Вы можете сделать это, просто используя десятичную точку во входных данных:
>>> 4/100.0
0.040000000000000001
Есть три варианта:
>>> 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, спасибо ΤΖΩΤΖΙΟΥ!
Это дает значение с плавающей запятой, а не десятичное значение. См. Ответ Глифа.
Вы также можете использовать from __future__ import division в исходном коде.
И все же люди говорят, что python - отличный язык программирования для математики ... Я не знаю, что здесь хуже, используя специальный импорт, который может изменить поведение, если его удалить, или указав везде операцию с плавающей запятой.
Сделайте один или оба термина числом с плавающей запятой, например:
4.0/100.0
В качестве альтернативы включите функцию, которая будет по умолчанию в Python 3.0, «истинное деление», которая сделает то, что вы хотите. В верхней части модуля или скрипта выполните:
from __future__ import division
Вы не можете получить десятичное значение, разделив одно целое число на другое, вы всегда получите целое число (результат будет усечен до целого). Вам нужно, чтобы хотя бы одно значение было десятичным числом.
Обратите внимание, что в Python 3.0 этого больше не будет, если вы используете /.
Другие ответы подсказывают, как получить значение с плавающей запятой. Хотя это будет близко к тому, что вы хотите, это не будет точно:
>>> 0.4/100.
0.0040000000000000001
Если вам действительно нужно значение десятичный, сделайте следующее:
>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")
Это даст вам объект, который правильно знает, что 4/100 в база 10 равно «0,04». Числа с плавающей запятой на самом деле имеют основание 2, то есть двоичное, а не десятичное.
Вы также можете посмотреть пакет Python десятичный. Это даст хорошие десятичные результаты.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Здесь у нас есть два возможных случая, приведенных ниже
from __future__ import division
print(4/100)
print(4//100)
для python3 вам не требуется, чтобы строка деления импорта просто использовала операторы печати для python2, вам нужно явно добавить оператор импорта
Импортировать разделение из будущей библиотеки следующим образом:
from__future__ import division
Пожалуйста, добавьте подробности, почему это решит исходную проблему, и, возможно, какие недостатки у этого подхода.
Оператор деления @Murphy не предустановлен в старой версии python. вам не нужно импортировать деление при использовании версий 3.4,3.5 или 3.6
Оператор деления @Murphy не предустановлен в старой версии python. вам не нужно импортировать деление при использовании версий 3.4,3.5 или 3.6
Добавьте в свой код следующую функцию с ее обратным вызовом.
# 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).
Комментарий ниже для любых запросов.
Вы также можете попробовать добавить «.0» в конце числа.
4,0 / 100,0
Это только отбрасывание дробной части после десятичной. Вы пробовали: 4.0 / 100
Пожалуйста, также добавьте доступность опции командной строки
python -Q new, чтобы ваш ответ был более полным.