¿Cómo obtengo un valor decimal cuando uso el operador de división en Python?

Por ejemplo, el símbolo de división estándar ‘/’ se redondea a cero:

>>> 4 / 100 0 

Sin embargo, quiero que vuelva 0.04. ¿Qué uso?

Hay tres opciones:

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

que es el mismo comportamiento que C, C ++, Java, etc., o

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

También puede activar este comportamiento pasando el argumento -Qnew al intérprete de Python:

 $ python -Qnew >>> 4 / 100 0.04 

La segunda opción será la predeterminada en Python 3.0. Si desea tener la división de enteros anterior, debe utilizar el operador // .

Edición : sección añadida sobre -Qnew , gracias a ΤΖΩΤΖΙΟΥ !

Otras respuestas sugieren cómo obtener un valor de punto flotante. Si bien esto estará cerca de lo que quieres, no será exacto:

 >>> 0.4/100. 0.0040000000000000001 

Si realmente quieres un valor decimal , haz esto:

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

Eso le dará un objeto que sabe correctamente que 4/100 en la base 10 es “0.04”. Los números de punto flotante están realmente en la base 2, es decir, binarios, no decimales.

Convierta uno o ambos términos en un número de punto flotante, de esta manera:

 4.0/100.0 

Alternativamente, active la función que será predeterminada en Python 3.0, ‘división verdadera’, que hace lo que quiere. En la parte superior de su módulo o script, haga:

 from __future__ import division 

Es posible que desee ver el paquete decimal de Python, también. Esto proporcionará buenos resultados decimales.

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

Debe decirle a Python que use valores de punto flotante, no enteros. Puede hacerlo simplemente usando un punto decimal en las entradas:

 >>> 4/100.0 0.040000000000000001 

Probar 4.0 / 100

Una ruta sencilla 4 / 100.0.

o

4.0 / 100

Aquí tenemos dos casos posibles dados a continuación.

 from __future__ import division print(4/100) print(4//100) 

También puede intentar agregar un “.0” al final del número.

4.0 / 100.0

No puede obtener un valor decimal al dividir un número entero por otro, siempre obtendrá un número entero de esa manera (el resultado se trunca a número entero). Necesita al menos un valor para ser un número decimal.

Agregue la siguiente función en su código con su callback.

 # 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(, , ) divide(1, 7, 10) # Output : 0.1428571428 # OR divide(1, 7) # Output : 0.1428 

Esta función funciona sobre la base del “algoritmo de división de euclides”. Esta función es muy útil si no desea importar ningún archivo de encabezado externo en su proyecto.

Syntex: divide ([dividente], [divisor], [lugar decimal (opcional))

Código: divide(1, 7, 10) O divide(1, 7)

Comenta abajo para cualquier consulta.

Importar la división de la biblioteca futura como esta:

 from__future__ import division