Por ejemplo, el símbolo de división estándar '/' rondas a cero:¿Cómo obtengo un valor decimal cuando uso el operador de división en Python?
>>> 4/100
0
Sin embargo, quiero que vuelva 0.04. ¿Qué uso?
Por ejemplo, el símbolo de división estándar '/' rondas a cero:¿Cómo obtengo un valor decimal cuando uso el operador de división en Python?
>>> 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 el C, C++, Java, etc., o
>>> from __future__ import division
>>> 4/100
0.04
también puede activar este comportamiento al pasar 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 usar el operador //
.
Editar sección: sección añadida sobre -Qnew
, gracias a ΤΖΩΤΖΙΟΥ!
Trate 4,0/100
Una ruta sencilla 4/100,0
o
4,0/100
Usted necesita decirle a Python para utilizar valores de coma flotante, y no enteros. Usted puede hacer eso simplemente utilizando un punto decimal a sí mismo en las entradas:
>>> 4/100.0
0.040000000000000001
Hacer uno o ambos de los términos de un número de coma flotante, así:
4.0/100.0
Alternativamente, activar la función que será por defecto en Python 3.0, 'verdadera división', que hace lo que quiere . En la parte superior de su módulo o secuencia de comandos, haga:
from __future__ import division
Usted no puede obtener un valor decimal al dividir un número entero con otro, se le Allways obtener un número entero de esa manera (como resultado truncan a enteros). Necesita al menos un valor para ser un número decimal.
Tenga en cuenta que este ya no será el caso en Python 3.0 si usa /. –
Otras respuestas sugieren cómo obtener un valor de coma flotante. Si bien esto wlil estar cerca de lo que quiere, no va a ser exactos:
>>> 0.4/100.
0.0040000000000000001
Si realmente desea un valor decimal , haga lo siguiente:
>>> import decimal
>>> decimal.Decimal('4')/decimal.Decimal('100')
Decimal("0.04")
qué le dará un objeto que sepa correctamente que 4/100 en base 10 es "0.04". Los números de coma flotante están realmente en la base 2, es decir, binarios, no decimales.
Es posible que desee mirar el paquete decimal de Python, también. Esto proporcionará buenos resultados decimales.
>>> decimal.Decimal('4')/100
Decimal("0.04")
Por favor considere siguiente ejemplo
float tot=(float)31/7;
... esto ni siquiera es Python. – Moira
Aquí tenemos dos casos posibles se indican a continuación
from __future__ import division
print(4/100)
print(4//100)
para python3 no necesita esa línea de división de importación solo use declaraciones de impresión para python2 necesita agregar explícitamente la instrucción de importación –
división de importación de la biblioteca futuro como esto:
Agregue detalles de por qué esto solucionaría el problema original, y quizás qué desventajas tiene este enfoque. – Murphy
El operador de división @Murphy no está preinstalado en la versión anterior de python. no es necesario importar la división cuando se utiliza la versión 3.4.3.5 o 3.6 –
El operador de división @Murphy no está preinstalado en la versión anterior de python. no es necesario importar la división cuando se utiliza la versión 3.4.3.5 o 3.6 –
Por favor, añada también la disponibilidad de 'python -Q new' opción de línea de comandos para que tu respuesta sea más completa. – tzot
Esto proporciona un valor de coma flotante, no un valor decimal. Ver la respuesta de Glyph. – Jim
También puede usar 'from __future__ import division' en el código fuente. –