¿Por qué este cálculo simple retorno 0¿Por qué Python devuelve 0 para el cálculo de división simple?
>>> 25/100*50
0
mientras que en realidad esto calcula correctamente?
>>> .25*50
12.5
>>> 10/2*2
10
¿Qué pasa con el primer ejemplo?
¿Por qué este cálculo simple retorno 0¿Por qué Python devuelve 0 para el cálculo de división simple?
>>> 25/100*50
0
mientras que en realidad esto calcula correctamente?
>>> .25*50
12.5
>>> 10/2*2
10
¿Qué pasa con el primer ejemplo?
En Python 2, 25/100
es cero cuando se realiza una división de enteros. ya que el resultado es menor que 1
.
Puedes "corregir" esto agregando from __future__ import division
a tu script. Esto siempre realizará una división flotante cuando se usa el operador /
y usa //
para la división entera.
Otra opción sería hacer que al menos uno de los operandos sea flotante, p. 25.0/100
.
En Python 3, 25/100
es siempre 0.25
.
25/100
es un cálculo entero que redondea (por truncamiento) a 0
.
Este es un problema del número entero truncamiento (es decir, cualquier parte fraccional de un número se descarta). Por lo tanto:
25/100
da 0
Sin embargo, siempre que al menos uno de los operandos en la división es un flotador, que obtendrá un resultado float:
25/100.0
o 25.0/100
o 25.0/100.0
todos dan 0.25
¿Cómo se haría esto en caso de que los números se almacenan en una variable? Por ejemplo, x/y, donde x = 4 e y = 3. O x = someObject.size. – altabq
Una forma de hacerlo es tp multiplicar uno de los números por 1.0. Por ejemplo, '1.0 * x/2' o podría hacer' float (x)/2' - podría haber otras formas, pero estas vienen a la mente de la parte superior de mi cabeza. Siempre puede verificar interactivamente sus resultados antes de codificarlos en un programa. Espero que ayude. – Levon
Sí, sí, gracias por la respuesta! – altabq
Ligero, no es tanto redondear como truncar. – Levon
@Levon Esa es una forma de redondeo, pero sí. – Marcin