Pregunta

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

>>> 4 / 100
0

Sin embargo, quiero que devuelva 0,04.¿Qué uso?

¿Fue útil?

Solución

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 puedes 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 antigua división de enteros, debe usar la // operador.

Editar:sección agregada sobre -Qnew, gracias a ΤΖΩΤΖΙΟΥ!

Otros consejos

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

>>> 0.4/100.
0.0040000000000000001

Si realmente quieres un decimal valor, 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 base 10 es "0,04".Los números de coma flotante en realidad están en base 2, es decirbinario, no decimal.

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

4.0/100.0

Alternativamente, active la característica que será predeterminada en Python 3.0, 'división verdadera', que hace lo que desea.En la parte superior de su módulo o script, haga:

from __future__ import division

Quizás quieras mirar Python decimal paquete, 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 números enteros.Puedes hacerlo simplemente usando un punto decimal en las entradas:

>>> 4/100.0
0.040000000000000001

Prueba 4.0/100

Una ruta sencilla 4/100.0

o

4.0 / 100

Aquí tenemos dos posibles casos que se detallan a continuación.

from __future__ import division

print(4/100)
print(4//100)

También puedes intentar agregar un ".0" al final del número.

4.0/100.0

No puedes obtener un valor decimal dividiendo un número entero entre otro, siempre obtendrás un número entero de esa manera (el resultado se trunca a un 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 devolución de llamada.

# 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

Esta función funciona sobre la base del "Algoritmo de división de Euclid".Esta función es muy útil si no desea importar ningún archivo de encabezado externo en su proyecto.

Síntesis:dividir([dividente], [divisor], [lugar decimal(opcional))

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

Comente a continuación para cualquier consulta.

Importe la división de una biblioteca futura como esta:

from__future__ import division
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top